diff --git a/docker-compose.yml b/docker-compose.yml
index a1f44b603ce3fc5b1ff06fff267ba7dbdd2832bf..292f7ccd0a33f1e4121c15df6756fab774a68244 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,11 +1,8 @@
 version: '2'
 services:
-  onlyoffice-document:
+  onlyoffice-documentserver-data:
+    container_name: onlyoffice-documentserver-data
     image: onlyoffice/4testing-documentserver:latest
-    depends_on:
-      - onlyoffice-mysql
-      - onlyoffice-redis
-      - onlyoffice-rabbitmq
     environment:
       - MYSQL_SERVER_HOST=onlyoffice-mysql
       - MYSQL_SERVER_PORT=3306
@@ -16,6 +13,26 @@ services:
       - RABBITMQ_SERVER_PASS=guest
       - REDIS_SERVER_HOST=onlyoffice-redis
       - REDIS_SERVER_PORT=6379
+    stdin_open: true
+    tty: true
+    restart: always
+    networks:
+      - onlyoffice
+    volumes:
+       - /var/www/onlyoffice/Data
+       - /var/log/onlyoffice
+       - /var/lib/onlyoffice/documentserver/App_Data/cache/files
+       - /var/www/onlyoffice/documentserver-example/public/files
+       - /usr/share/fonts
+       
+  onlyoffice-documentserver:
+    image: onlyoffice/4testing-documentserver:latest
+    depends_on:
+      - onlyoffice-documentserver-data
+      - onlyoffice-mysql
+      - onlyoffice-redis
+      - onlyoffice-rabbitmq
+    environment:
       - HTTP_CHECK=HEAD /healthcheck
       - EXTRA_SETTINGS=http-check expect status 200
     stdin_open: true
@@ -26,24 +43,21 @@ services:
     expose:
       - '80'
       - '443'
-    volumes:
-       - document_data:/var/www/onlyoffice/Data
-       - document_log:/var/log/onlyoffice
-       - document_files:/var/lib/onlyoffice/documentserver/App_Data/cache/files
-       - document_example_files:/var/www/onlyoffice/documentserver-example/public/files
+    volumes_from:
+     - onlyoffice-documentserver-data:
 
   onlyoffice-haproxy:
     container_name: onlyoffice-haproxy
     image: dockercloud/haproxy:1.2.1
     depends_on:
-      - onlyoffice-document
+      - onlyoffice-documentserver
     environment:
       - MODE=tcp
       - TCP_PORTS="80, 443"
     stdin_open: true
     tty: true
     links:
-     - onlyoffice-document
+     - onlyoffice-documentserver
     volumes:
       - /var/run/docker.sock:/var/run/docker.sock
     restart: always
@@ -93,7 +107,3 @@ networks:
 
 volumes:
   mysql_data:
-  document_data:
-  document_log:
-  document_files:
-  document_example_files:
diff --git a/run-document-server.sh b/run-document-server.sh
index 89a0bcc65dc9cad2101e35bb570998e0a76ea393..901ad098b13ad6b7326e50134e23ad18d045ddb6 100644
--- a/run-document-server.sh
+++ b/run-document-server.sh
@@ -4,7 +4,7 @@ APP_DIR="/var/www/onlyoffice/documentserver"
 DATA_DIR="/var/www/onlyoffice/Data"
 LOG_DIR="/var/log/onlyoffice/documentserver"
 
-ONLYOFFICE_HTTPS=${ONLYOFFICE_HTTPS:-false}
+ONLYOFFICE_DATA_CONTAINER=${ONLYOFFICE_DATA_CONTAINER:-false}
 
 SSL_CERTIFICATES_DIR="${DATA_DIR}/certs"
 SSL_CERTIFICATE_PATH=${SSL_CERTIFICATE_PATH:-${SSL_CERTIFICATES_DIR}/onlyoffice.crt}
@@ -24,18 +24,125 @@ NGINX_WORKER_CONNECTIONS=${NGINX_WORKER_CONNECTIONS:-$(ulimit -n)}
 
 ONLYOFFICE_DEFAULT_CONFIG=/etc/onlyoffice/documentserver/default.json
 
-MYSQL_SERVER_HOST=${MYSQL_SERVER_HOST:-"localhost"}
-MYSQL_SERVER_PORT=${MYSQL_SERVER_PORT:-"3306"}
-MYSQL_SERVER_DB_NAME=${MYSQL_SERVER_DB_NAME:-"onlyoffice"}
-MYSQL_SERVER_USER=${MYSQL_SERVER_USER:-"root"}
-MYSQL_SERVER_PASS=${MYSQL_SERVER_PASS:-""}
-
-RABBITMQ_SERVER_HOST=${RABBITMQ_SERVER_HOST:-"localhost"}
-RABBITMQ_SERVER_USER=${RABBITMQ_SERVER_USER:-"guest"}
-RABBITMQ_SERVER_PASS=${RABBITMQ_SERVER_PASS:-"guest"}
+JSON="json -q -f ${ONLYOFFICE_DEFAULT_CONFIG}"
+
+MYSQL_SERVER_HOST=${MYSQL_SERVER_HOST:-$(${JSON} services.CoAuthoring.sql.dbHost)}
+MYSQL_SERVER_PORT=${MYSQL_SERVER_PORT:-$(${JSON} services.CoAuthoring.sql.dbPort)}
+MYSQL_SERVER_DB_NAME=${MYSQL_SERVER_DB_NAME:-$(${JSON} services.CoAuthoring.sql.dbName)}
+MYSQL_SERVER_USER=${MYSQL_SERVER_USER:-$(${JSON} services.CoAuthoring.sql.dbUser)}
+MYSQL_SERVER_PASS=${MYSQL_SERVER_PASS:-$(${JSON} services.CoAuthoring.sql.dbPass)}
+
+RABBITMQ_SERVER_URL=$(${JSON} rabbitmq.url)
+RABBITMQ_SERVER_HOST=${RABBITMQ_SERVER_HOST:-${RABBITMQ_SERVER_URL#'amqp://'}}
+RABBITMQ_SERVER_USER=${RABBITMQ_SERVER_USER:-$(${JSON} rabbitmq.login)}
+RABBITMQ_SERVER_PASS=${RABBITMQ_SERVER_PASS:-$(${JSON} rabbitmq.password)}
+RABBITMQ_SERVER_PORT=${RABBITMQ_SERVER_PORT:-"5672"}
+
+REDIS_SERVER_HOST=${REDIS_SERVER_HOST:-$(${JSON} services.CoAuthoring.redis.host)}
+REDIS_SERVER_PORT=${REDIS_SERVER_PORT:-$(${JSON} services.CoAuthoring.redis.port)}
+
+waiting_for_connection(){
+  until nc -z -w 3 "$1" "$2"; do
+    >&2 echo "Waiting for connection to the $1 host on port $2"
+    sleep 1
+  done
+}
+
+waiting_for_mysql(){
+  waiting_for_connection ${MYSQL_SERVER_HOST} ${MYSQL_SERVER_PORT}
+}
+
+waiting_for_rabbitmq(){
+  waiting_for_connection ${RABBITMQ_SERVER_HOST} ${RABBITMQ_SERVER_PORT}
+}
+
+waiting_for_redis(){
+  waiting_for_connection ${REDIS_SERVER_HOST} ${REDIS_SERVER_PORT}
+}
+
+update_mysql_settings(){
+  ${JSON} -I -e "this.services.CoAuthoring.sql.dbHost = '${MYSQL_SERVER_HOST}'"
+  ${JSON} -I -e "this.services.CoAuthoring.sql.dbPort = '${MYSQL_SERVER_PORT}'"
+  ${JSON} -I -e "this.services.CoAuthoring.sql.dbName = '${MYSQL_SERVER_DB_NAME}'"
+  ${JSON} -I -e "this.services.CoAuthoring.sql.dbUser = '${MYSQL_SERVER_USER}'"
+  ${JSON} -I -e "this.services.CoAuthoring.sql.dbPass = '${MYSQL_SERVER_PASS}'"
+}
+
+update_rabbitmq_setting(){
+  ${JSON} -I -e "this.rabbitmq.url = 'amqp://${RABBITMQ_SERVER_HOST}'"
+  ${JSON} -I -e "this.rabbitmq.login = '${RABBITMQ_SERVER_USER}'"
+  ${JSON} -I -e "this.rabbitmq.password = '${RABBITMQ_SERVER_PASS}'"
+}
+
+update_redis_settings(){
+  ${JSON} -I -e "this.services.CoAuthoring.redis.host = '${REDIS_SERVER_HOST}'"
+  ${JSON} -I -e "this.services.CoAuthoring.redis.port = '${REDIS_SERVER_PORT}'"
+}
+
+create_mysql_db(){
+  MYSQL="mysql -s -h${MYSQL_SERVER_HOST} -u${MYSQL_SERVER_USER}"
+  if [ -n "${MYSQL_SERVER_PASS}" ]; then
+    MYSQL="$MYSQL -p${MYSQL_SERVER_PASS}"
+  fi
 
-REDIS_SERVER_HOST=${REDIS_SERVER_HOST:-"localhost"}
-REDIS_SERVER_PORT=${REDIS_SERVER_PORT:-"6379"}
+  # Create  db on remote server
+  ${MYSQL} -e "CREATE DATABASE IF NOT EXISTS ${MYSQL_SERVER_DB_NAME} CHARACTER SET utf8 COLLATE 'utf8_general_ci';"
+  ${MYSQL} "${MYSQL_SERVER_DB_NAME}" < "${APP_DIR}/server/schema/createdb.sql"
+}  
+
+start_nginx(){
+  # Set up nginx
+  sed 's/^worker_processes.*/'"worker_processes ${NGINX_WORKER_PROCESSES};"'/' -i ${NGINX_CONFIG_PATH}
+  sed 's/worker_connections.*/'"worker_connections ${NGINX_WORKER_CONNECTIONS};"'/' -i ${NGINX_CONFIG_PATH}
+  sed 's/access_log.*/'"access_log off;"'/' -i ${NGINX_CONFIG_PATH}
+
+  # setup HTTPS
+  if [ -f "${SSL_CERTIFICATE_PATH}" -a -f "${SSL_KEY_PATH}" ]; then
+    cp ${SYSCONF_TEMPLATES_DIR}/nginx/onlyoffice-documentserver-ssl.conf ${NGINX_ONLYOFFICE_PATH}
+
+    mkdir ${DATA_DIR}
+
+    # configure nginx
+    sed 's,{{SSL_CERTIFICATE_PATH}},'"${SSL_CERTIFICATE_PATH}"',' -i ${NGINX_ONLYOFFICE_PATH}
+    sed 's,{{SSL_KEY_PATH}},'"${SSL_KEY_PATH}"',' -i ${NGINX_ONLYOFFICE_PATH}
+
+    # if dhparam path is valid, add to the config, otherwise remove the option
+    if [ -r "${SSL_DHPARAM_PATH}" ]; then
+      sed 's,{{SSL_DHPARAM_PATH}},'"${SSL_DHPARAM_PATH}"',' -i ${NGINX_ONLYOFFICE_PATH}
+    else
+      sed '/ssl_dhparam {{SSL_DHPARAM_PATH}};/d' -i ${NGINX_ONLYOFFICE_PATH}
+    fi
+
+    sed 's,{{SSL_VERIFY_CLIENT}},'"${SSL_VERIFY_CLIENT}"',' -i ${NGINX_ONLYOFFICE_PATH}
+
+    if [ -f "${CA_CERTIFICATES_PATH}" ]; then
+      sed 's,{{CA_CERTIFICATES_PATH}},'"${CA_CERTIFICATES_PATH}"',' -i ${NGINX_ONLYOFFICE_PATH}
+    else
+      sed '/{{CA_CERTIFICATES_PATH}}/d' -i ${NGINX_ONLYOFFICE_PATH}
+    fi
+
+    if [ "${ONLYOFFICE_HTTPS_HSTS_ENABLED}" == "true" ]; then
+      sed 's/{{ONLYOFFICE_HTTPS_HSTS_MAXAGE}}/'"${ONLYOFFICE_HTTPS_HSTS_MAXAGE}"'/' -i ${NGINX_ONLYOFFICE_PATH}
+    else
+      sed '/{{ONLYOFFICE_HTTPS_HSTS_MAXAGE}}/d' -i ${NGINX_ONLYOFFICE_PATH}
+    fi
+  else
+    cp ${SYSCONF_TEMPLATES_DIR}/nginx/onlyoffice-documentserver.conf ${NGINX_ONLYOFFICE_PATH}
+  fi
+  
+  #start service
+  service nginx start
+}
+
+start_supervisor(){
+  # Copy modified supervisor start script
+  cp ${SYSCONF_TEMPLATES_DIR}/supervisor/supervisor /etc/init.d/
+  # Copy modified supervisor config
+  cp ${SYSCONF_TEMPLATES_DIR}/supervisor/supervisord.conf /etc/supervisor/supervisord.conf
+  
+  #start service
+  service supervisor start
+}
 
 # create base folders
 for i in converter docservice spellchecker metrics gc; do
@@ -44,96 +151,39 @@ done
 
 mkdir -p ${LOG_DIR}-example
 
-# Set up nginx
-sed 's/^worker_processes.*/'"worker_processes ${NGINX_WORKER_PROCESSES};"'/' -i ${NGINX_CONFIG_PATH}
-sed 's/worker_connections.*/'"worker_connections ${NGINX_WORKER_CONNECTIONS};"'/' -i ${NGINX_CONFIG_PATH}
-sed 's/access_log.*/'"access_log off;"'/' -i ${NGINX_CONFIG_PATH}
-
-# setup HTTPS
-if [ -f "${SSL_CERTIFICATE_PATH}" -a -f "${SSL_KEY_PATH}" ]; then
-  cp ${SYSCONF_TEMPLATES_DIR}/nginx/onlyoffice-documentserver-ssl.conf ${NGINX_ONLYOFFICE_PATH}
-
-  mkdir ${DATA_DIR}
-
-  # configure nginx
-  sed 's,{{SSL_CERTIFICATE_PATH}},'"${SSL_CERTIFICATE_PATH}"',' -i ${NGINX_ONLYOFFICE_PATH}
-  sed 's,{{SSL_KEY_PATH}},'"${SSL_KEY_PATH}"',' -i ${NGINX_ONLYOFFICE_PATH}
-
-  # if dhparam path is valid, add to the config, otherwise remove the option
-  if [ -r "${SSL_DHPARAM_PATH}" ]; then
-    sed 's,{{SSL_DHPARAM_PATH}},'"${SSL_DHPARAM_PATH}"',' -i ${NGINX_ONLYOFFICE_PATH}
-  else
-    sed '/ssl_dhparam {{SSL_DHPARAM_PATH}};/d' -i ${NGINX_ONLYOFFICE_PATH}
-  fi
-
-  sed 's,{{SSL_VERIFY_CLIENT}},'"${SSL_VERIFY_CLIENT}"',' -i ${NGINX_ONLYOFFICE_PATH}
-
-  if [ -f "${CA_CERTIFICATES_PATH}" ]; then
-    sed 's,{{CA_CERTIFICATES_PATH}},'"${CA_CERTIFICATES_PATH}"',' -i ${NGINX_ONLYOFFICE_PATH}
-  else
-    sed '/{{CA_CERTIFICATES_PATH}}/d' -i ${NGINX_ONLYOFFICE_PATH}
-  fi
-
-  if [ "${ONLYOFFICE_HTTPS_HSTS_ENABLED}" == "true" ]; then
-    sed 's/{{ONLYOFFICE_HTTPS_HSTS_MAXAGE}}/'"${ONLYOFFICE_HTTPS_HSTS_MAXAGE}"'/' -i ${NGINX_ONLYOFFICE_PATH}
-  else
-    sed '/{{ONLYOFFICE_HTTPS_HSTS_MAXAGE}}/d' -i ${NGINX_ONLYOFFICE_PATH}
-  fi
-else
-  cp ${SYSCONF_TEMPLATES_DIR}/nginx/onlyoffice-documentserver.conf ${NGINX_ONLYOFFICE_PATH}
-fi
-
-JSON="json -I -q -f ${ONLYOFFICE_DEFAULT_CONFIG}"
-
 if [ ${MYSQL_SERVER_HOST} != "localhost" ]; then
-
-  # Change mysql settings
-  ${JSON} -e "this.services.CoAuthoring.sql.dbHost = '${MYSQL_SERVER_HOST}'"
-  ${JSON} -e "this.services.CoAuthoring.sql.dbPort = '${MYSQL_SERVER_PORT}'"
-  ${JSON} -e "this.services.CoAuthoring.sql.dbName = '${MYSQL_SERVER_DB_NAME}'"
-  ${JSON} -e "this.services.CoAuthoring.sql.dbUser = '${MYSQL_SERVER_USER}'"
-  ${JSON} -e "this.services.CoAuthoring.sql.dbPass = '${MYSQL_SERVER_PASS}'"
-
-  MYSQL="mysql -s -h${MYSQL_SERVER_HOST} -u${MYSQL_SERVER_USER}"
-  if [ -n "${MYSQL_SERVER_PASS}" ]; then
-    MYSQL="$MYSQL -p${MYSQL_SERVER_PASS}"
-  fi
-
-  # Create  db on remote server
-  ${MYSQL} -e "CREATE DATABASE IF NOT EXISTS ${MYSQL_SERVER_DB_NAME} CHARACTER SET utf8 COLLATE 'utf8_general_ci';"
-  ${MYSQL} "${MYSQL_SERVER_DB_NAME}" < "${APP_DIR}/server/schema/createdb.sql"
+  update_mysql_settings
+  create_mysql_db
 else
-  service mysql start
+  if [ ${ONLYOFFICE_DATA_CONTAINER} != "true" ]; then
+    service mysql start
+  fi
 fi
 
 if [ ${RABBITMQ_SERVER_HOST} != "localhost" ]; then
-
-  # Change rabbitmq settings
-  ${JSON} -e "this.rabbitmq.url = 'amqp://${RABBITMQ_SERVER_HOST}'"
-  ${JSON} -e "this.rabbitmq.login = '${RABBITMQ_SERVER_USER}'"
-  ${JSON} -e "this.rabbitmq.password = '${RABBITMQ_SERVER_PASS}'"
-  
+  update_rabbitmq_setting
 else
-  service redis-server start
+  if [ ${ONLYOFFICE_DATA_CONTAINER} != "true" ]; then
+    service redis-server start
+  fi
 fi
 
 if [ ${REDIS_SERVER_HOST} != "localhost" ]; then
-
-  # Change redis settings
-  ${JSON} -e "this.services.CoAuthoring.redis.host = '${REDIS_SERVER_HOST}'"
-  ${JSON} -e "this.services.CoAuthoring.redis.port = '${REDIS_SERVER_PORT}'"
-  
+  update_redis_settings
 else
-  service rabbitmq-server start
+  if [ ${ONLYOFFICE_DATA_CONTAINER} != "true" ]; then
+    service rabbitmq-server start
+  fi
 fi
 
-# Copy modified supervisor start script
-cp ${SYSCONF_TEMPLATES_DIR}/supervisor/supervisor /etc/init.d/
-# Copy modified supervisor config
-cp ${SYSCONF_TEMPLATES_DIR}/supervisor/supervisord.conf /etc/supervisor/supervisord.conf
-
-service nginx start
-service supervisor start
+if [ ${ONLYOFFICE_DATA_CONTAINER} != "true" ]; then
+  waiting_for_mysql
+  waiting_for_rabbitmq
+  waiting_for_redis
+  
+  start_nginx
+  start_supervisor
+fi
 
 # Regenerate the fonts list and the fonts thumbnails
-documentserver-generate-allfonts.sh
+documentserver-generate-allfonts.sh ${ONLYOFFICE_DATA_CONTAINER}
\ No newline at end of file