Установка

Docker Compose

Пошаговая инструкция по установке и настройке сервиса через Docker Compose

Подготовка сервера

Создайте директорию проекта

mkdir -p /var/www/html/konkurs/
cd /var/www/html/konkurs/

Обновите список пакетов и установите Docker

apt update && apt install -y docker.io

Установите Docker Compose

Определите последнюю версию автоматически или укажите конкретную:

COMVER=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep 'tag_name' | cut -d\" -f4)

Загрузите и установите бинарный файл:

curl -L "https://github.com/docker/compose/releases/download/$COMVER/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
docker-compose version
Убедитесь, что версия Docker Compose 2.20 или выше. Более ранние версии могут не поддерживать используемые возможности конфигурации.

Настройка Docker daemon

Создайте конфигурационный файл Docker daemon:

mkdir -p /etc/docker
nano /etc/docker/daemon.json

Содержимое файла daemon.json:

{
  "mtu": 1450,
  "bip": "10.10.0.1/16",
  "default-address-pools": [{
    "base": "10.0.0.0/8",
    "size": 16
  }],
  "data-root": "/opt/docker",
  "storage-driver": "overlay2",
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
Параметр mtu: 1450 рекомендуется для облачных сред (OpenStack, Yandex Cloud и др.), где MTU канала может быть меньше стандартного. Если Платформа разворачивается на bare-metal — можно использовать значение 1500.

Перезапустите Docker для применения настроек:

systemctl restart docker

Конфигурация Docker Compose

Файл docker-compose.yml

Создайте файл docker-compose.yml в директории проекта:

nano docker-compose.yml

Описание сервисов

СервисОбразНазначение
konkurs-clientapplication/clientФронтенд-приложение (Nuxt)
konkurs-apiapplication/apiБэкенд API (Laravel)
konkurs-nginxnginx:alpineОбратный прокси, раздача статики
konkurs-pgsqlpostgres:17-alpineБаза данных PostgreSQL
konkurs-valkeyvalkey/valkey:7-alpineКэширование и очереди (Redis-совместимый)
konkurs-meilisearchgetmeili/meilisearchПолнотекстовый поиск

Создание env-файлов и директорий

Создайте файлы окружения

nano .env
nano .env.konkurs.client

Описание параметров .env см. в разделе Конфигурация.

Создайте директории для томов

mkdir -p /var/www/html/konkurs/konkurs-api-storage/
mkdir -p /var/www/html/konkurs/konkurs-storage/
mkdir -p /var/www/html/konkurs/konkurs-dumps/
mkdir -p /var/www/html/konkurs/konkurs-logs/
mkdir -p /var/log/nginx/

Настройка Nginx

Создайте директорию и файл конфигурации:

mkdir -p nginx
nano nginx/defaults.conf
После изменения конфигурации Nginx обязательно проверьте синтаксис перед перезагрузкой, чтобы не уронить работающий сервис.

Проверка и перезагрузка:

docker-compose exec -T konkurs-nginx nginx -t
docker-compose exec -T konkurs-nginx nginx -s reload

Авторизация в Docker-реестре

Если образы размещены в приватном реестре, выполните авторизацию:

docker login <адрес-реестра> -u <пользователь> -p <токен>

После авторизации загрузите все образы:

docker-compose pull
Токен доступа к реестру предоставляется администратором. Не передавайте его третьим лицам и не сохраняйте в открытом виде в файлах конфигурации.