Установка Docker и настройка контейнеров

Установка Docker

Для установки нам потребуется docker, образ verdaccio.

Устанавливаем docker.

Настройка:

Разрешаем доступ к диску, для монтирования папки:

http://help.malond.com/wp-content/uploads/2017/11/2017-11-01.png

Далее мы будем устанавливать следующие контейнеры:

  • Mongo
  • Redis
  • PostgreSQL
  • Redmine
  • Verdaccio
  • Nginx
  • MySQL
  • Ghost

Установка контейнеров

Mongo

Перед началом, создадим папку по адресу:

C:\Users\sokol\Documents\docker\shared\mongo\data  

Скачаем контейнер:

docker pull mongo  

Запуск:

docker run --name some-mongo -p 27017:27017 mongo  

или

docker run --name some-mongo -p 27017:27017 -v /c/Users/sokol/Documents/docker/shared/mongo/data:/data/db mongo  

Затем можно останавливать и запускать контейнер следующими командами.

Остановить:

docker stop some-mongo  

Запустить:

docker start some-mongo  
Redis

Перед началом, создадим папку по адресу:

C:\Users\sokol\Documents\docker\shared\redis\data  

Скачаем контейнер:

docker pull redis  

Запуск:

docker run --name some-redis -p 6379:6379 -v /c/Users/sokol/Documents/docker/shared/redis/data:/data -d redis redis-server  

Затем можно останавливать и запускать контейнер следующими командами.

Остановить:

docker stop some-redis  

Запустить:

docker start some-redis  
Postgres

Скачаем контейнер:

docker pull postgres  

Запуск:

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -p 5432:5432 -d postgres  

Затем можно останавливать и запускать контейнер следующими командами.

Остановить:

docker stop some-postgres  

Запустить:

docker start some-postgres  
Redmine

Скачаем контейнер:

docker pull redmine  

Запуск:

docker run -d -p 3434:3000 --name some-redmine --link some-postgres:postgres redmine  

Затем можно останавливать и запускать контейнер следующими командами.

Остановить:

docker stop some-redmine  

Запустить:

docker start some-redmine  
Verdaccio

Скачаем контейнер:

docker pull verdaccio/verdaccio  

Запуск:

docker run --name some-verdaccio -it -p 4873:4873 -d verdaccio/verdaccio  

Затем можно останавливать и запускать контейнер следующими командами.

Остановить:

docker stop some-verdaccio  

Запустить:

docker start some-verdaccio  
Nginx

Скачаем контейнер:

docker pull nginx  

Перед началом, создадим файл по адресу:

C:\Users\sokol\Documents\docker\shared\nginx\nginx.conf  

Перед тем, как наполнить файл настроек данными, необходимо узнать ip адрес хоста. Для этого заходим в Центр управления сетями и общим доступом и видим такую картину. Выбираем то, которая подчёркнута (nat).

http://help.malond.com/wp-content/uploads/2017/11/2017-11-02-2.png

Нажимаем Сведения и видим наш ip.

http://help.malond.com/wp-content/uploads/2017/11/2017-11-02-3.png

В моём случае это: 172.27.192.1. Если у вас отличается, замените на свой далее в файле настроек nginx.conf.

Так как мы будем использовать nginx только как proxy-сервер, поэтому настройки nginx.conf будут со следующим содержимым:

worker_processes 1;

events { worker_connections 1024; }

http {

    sendfile on;

    gzip                on;
    gzip_http_version   1.0;
    gzip_proxied        any;
    gzip_min_length     500;
    gzip_disable        "MSIE [1-6]\.";
    gzip_types          text/plain text/xml text/css
                        text/comma-separated-values
                        text/javascript
                        application/x-javascript
                        application/atom+xml;

    # List of application servers

    # FRONTEND
    upstream claster_frontend {

        server 172.27.192.1:8800;

    }

    # LOGIN
    upstream claster_login {

        server 172.27.192.1:8880;

    }

    # DASHBOARD
    upstream claster_dashboard {

        server 172.27.192.1:8900;

    }

    # CMS
    upstream claster_cms {

        server 172.27.192.1:8090;

    }

    # CMS (BACKEND API)
    upstream claster_cms_backend_api {

        server 172.27.192.1:8091;
    }

    # DOCS DEV API
    upstream claster_docs_dev_api {

        server 172.27.192.1:4444;
    }

    # Configuration for the server
    server {

        # Running port
        listen 80;

        # Proxying the connections connections

        # FRONTEND
        location / {

            proxy_pass          http://claster_frontend;
            proxy_redirect      off;
            proxy_set_header    Host $host;
            proxy_set_header    X-Real-IP $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Host $server_name;

        }

        # LOGIN
        location /l/ {

            proxy_pass          http://claster_login;
            proxy_redirect      off;
            proxy_set_header    Host $host;
            proxy_set_header    X-Real-IP $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Host $server_name;

        }

        # DASHBOARD
        location /d/ {

            proxy_pass          http://claster_dashboard;
            proxy_redirect      off;
            proxy_set_header    Host $host;
            proxy_set_header    X-Real-IP $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Host $server_name;

        }

        # CMS
        location /modules/cms/ {

            proxy_pass          http://claster_cms;
            proxy_redirect      off;
            proxy_set_header    Host $host;
            proxy_set_header    X-Real-IP $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Host $server_name;

        }

        # CMS (BACKEND API)
        location /modules/cms/api/ {

            proxy_pass          http://claster_cms_backend_api;
            proxy_redirect      off;
            proxy_set_header    Host $host;
            proxy_set_header    X-Real-IP $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Host $server_name;

        }

        # DOCS DEV API
        location /docs/api/ {

            proxy_pass          http://claster_docs_dev_api;
            proxy_redirect      off;
            proxy_set_header    Host $host;
            proxy_set_header    X-Real-IP $remote_addr;
            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header    X-Forwarded-Host $server_name;

        }
    }
}

Запуск:

docker run --name some-nginx -p 80:80 -v /c/Users/sokol/Documents/docker/shared/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx  

Затем можно останавливать и запускать контейнер следующими командами.

Остановить:

docker stop some-nginx  

Запустить:

docker start some-nginx  
MySQL

Скачаем контейнер:

docker pull mysql  

Запуск:

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-password -p 3306:3306 -d mysql  

Затем можно останавливать и запускать контейнер следующими командами.

Остановить:

docker stop some-mysql  

Запустить:

docker start some-mysql  
Ghost

Скачаем контейнер:

docker pull ghost  

Перед началом, создадим папку по адресу:

C:\Users\sokol\Documents\docker\shared\ghost\  

Запустим для формирования конфигурации:

docker run --name some-ghost -p 8020:2368 ghost  

Остановим:

docker run --name some-ghost -p 8020:2368 ghost  

Скопируем конфигурацию:

docker cp some-ghost:/var/lib/ghost:/c/Users/sokol/Documents/docker/shared/ghost  

Запуск:

docker run --name some-ghost -d -p 8020:2368 -v /var/lib/ghost:/c/Users/sokol/Documents/docker/shared/ghost ghost  

Затем можно останавливать и запускать контейнер следующими командами.

Остановить:

docker stop some-ghost  

Запустить:

docker start some-ghost  

Быстрый запуск и остановка

Необходимо создать скрипты.

Запуск:

echo "Start PosgreSQL"  
docker start some-postgres

echo "Start Mongo"  
docker start some-mongo

echo "Start Redis"  
docker start some-redis

echo "Start NPM"  
docker start some-verdaccio

echo "Start Redmine"  
docker start some-redmine

echo "Start Nginx"  
docker start some-nginx

echo "Start MySQL"  
docker start some-mysql

echo "Start Ghost"  
docker start some-ghost

echo "Show containers"  
docker ps

pause  

Остановка (в обратном порядке):

echo "Stop Ghost"  
docker stop some-ghost

echo "Stop MySQL"  
docker stop some-mysql

echo "Stop Nginx"  
docker stop some-nginx

echo "Stop Redmine"  
docker stop some-redmine

echo "Stop NPM"  
docker stop some-verdaccio

echo "Stop Redis"  
docker stop some-redis

echo "Stop Mongo"  
docker stop some-mongo

echo "Stop PosgreSQL"  
docker stop some-postgres

echo "Show containers"  
docker ps

pause