Skip to content

Docker-compose HA

Необходимо для работы

Установка

  1. Создайте в корне папку /sboard
shell
mkdir "/sboard"
  1. Создайте в новой папке файл 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_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
  1. Авторизуйтесь в Docker registry (запросите ключ авторизации у вашего менеджера)
shell
cat key.json | docker login \
--username json_key \
--password-stdin \
cr.yandex
  1. Подтяните образы с Docker registry
shell
docker-compose -f docker-compose.yml pull

Подсказка

Все процедуры, связанные с вызовом docker-compose, следует выполнять в папке с файлом docker-compose.yml

  1. Запустите docker-compose
shell
docker-compose -f docker-compose.yml up -d --force-recreate --scale sboard=2

Уточнение

В данной команде описан пример запуска с репликацией контейнера sboard (--scale sboard=2)

Настройка SSL

Инструкция

Настройка SSO

Инструкция