Установка Docker и настройка контейнеров
Установка Docker
Для установки нам потребуется docker, образ verdaccio.
Устанавливаем docker.
Настройка:
Разрешаем доступ к диску, для монтирования папки:
Далее мы будем устанавливать следующие контейнеры:
- 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).
Нажимаем Сведения и видим наш ip.
В моём случае это: 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