Тема
Docker с внешними ресурсами
Необходимо для работы
Установка
- Создайте в корне папку
/sboard
shell
mkdir "/sboard"
- Создайте в новой папке файл
docker-compose.yml
shell
nano docker-compose.yml
Пример docker-compose.yml
для запуска с внешними ресурсами (S3, PostgreSQL, Redis)
yml
version: "3.3"
services:
sboard:
image: "${DOCKER_REGISTRY}/sboard:${DOCKER_IMAGE_TAG}"
restart: "always"
environment:
DOMAIN_NAME: "${DOMAIN_NAME}"
POSTGRES_URL: "${POSTGRES_URL}"
REDIS_HOST: "${REDIS_HOST}"
REDIS_PORT: "${REDIS_PORT}"
REDIS_PASS: "${REDIS_PASS}"
S3_CDN_URL: "https://${DOMAIN_NAME}/storage/"
S3_BUCKET: "${S3_BUCKET}"
S3_ACCESS_KEY_ID: "${S3_ACCESS_KEY_ID}"
S3_SECRET_ACCESS_KEY: "${S3_SECRET_ACCESS_KEY}"
S3_ENDPOINT: "${S3_ENDPOINT}"
MIRO_CLIENT_ID: "${MIRO_CLIENT_ID}"
MIRO_CLIENT_SECRET: "${MIRO_CLIENT_SECRET}"
nginx:
image: "${DOCKER_REGISTRY}/nginx:${DOCKER_IMAGE_TAG}"
restart: "always"
ports:
- 80:80
- 443:443
environment:
DOMAIN_NAME: "${DOMAIN_NAME}"
volumes:
- "./certs:/certs"
depends_on:
- sboard
Переменные окружения
Создайте файл .env
в папке с docker-compose.yml
и укажите в нём переменные окружения. Пример:
shell
DOCKER_IMAGE_TAG=latest # уникальный идентификатор сборки(cм. релизы)
DOMAIN_NAME=demo.example.com # доменное имя, на котором развернется сервис
DOCKER_REGISTRY=registry # registry докер образов(запросите url registry у вашего менеджера)
POSTGRES_URL=postgresql://user:password@host:5432/db # url подключения к базе данных postgresql, содержит в себе root user, пароль и хост базы
REDIS_HOST=redis # хост для базы данных redis
REDIS_PORT=6379 # порт для базы данных redis
REDIS_PASS=12345gd67 # пароль для базы данных redis
S3_BUCKET=example-bucket # название бакета в s3 storage
S3_ACCESS_KEY_ID=access_key_id # айди ключа доступа к s3 storage
S3_SECRET_ACCESS_KEY=secret_access_key # ключ доступа к s3 storage
S3_ENDPOINT=https://storage.s3.com # url для s3 storage
MIRO_CLIENT_ID=MIRO_CLIENT_ID # id клиента в личном кабинете миро для импорта досок
MIRO_CLIENT_SECRET=MIRO_CLIENT_SECRET # секретный ключ клиента миро
HTTP/HTTPS
В случае, когда SSL не требуется, следует отредактировать docker-compose.yml
и nginx, в частности:
yml
nginx:
image: "${DOCKER_REGISTRY}/nginx-http:${DOCKER_IMAGE_TAG}"
restart: "always"
ports:
- 80:80
environment:
DOMAIN_NAME: "${DOMAIN_NAME}"
depends_on:
- sboard
- Авторизуйтесь в Docker registry (запросите ключ авторизации у вашего менеджера)
shell
cat key.json | docker login \
--username json_key \
--password-stdin \
cr.yandex
- Подтяните образы с Docker registry
shell
docker-compose -f docker-compose.yml pull
Подсказка
Все процедуры, связанные с вызовом docker-compose, следует выполнять в папке с файлом docker-compose.yml
- Запустите docker-compose
shell
docker-compose -f docker-compose.yml up -d --force-recreate --scale sboard=2
Уточнение
В данной команде описан пример запуска с репликацией контейнера sboard (--scale sboard=2
)