77 lines
3.1 KiB
YAML
77 lines
3.1 KiB
YAML
# Версия синтаксиса Docker Compose
|
||
version: "3.8"
|
||
|
||
services:
|
||
# 1. Веб-сервер и реверс-прокси Caddy
|
||
caddy:
|
||
image: caddy:2-alpine
|
||
container_name: platform-caddy
|
||
restart: unless-stopped
|
||
ports:
|
||
# Публикуем стандартные порты для веб-трафика
|
||
- "80:80"
|
||
- "443:443"
|
||
- "443:443/udp" # Для HTTP/3
|
||
volumes:
|
||
# Подключаем наш файл конфигурации Caddy
|
||
- ./Caddyfile:/etc/caddy/Caddyfile
|
||
# Подключаем папки с файлами, которые Caddy будет раздавать
|
||
- ./data/frontend:/srv/frontend # Статика фронтенда
|
||
- ./data/textures:/srv/files/textures # Скины и плащи
|
||
- ./data/modpack_files:/srv/files/modpacks # Файлы модпаков
|
||
# Именованные тома для персистентных данных Caddy (SSL-сертификаты и т.д.)
|
||
- caddy_data:/data
|
||
- caddy_config:/config
|
||
networks:
|
||
- platform-net
|
||
|
||
# 2. Бэкенд-сервер на Go
|
||
backend:
|
||
# Образ будет собираться и публиковаться в Gitea Registry нашим CI/CD
|
||
image: gitea.mrixs.me/minecraft-platform/backend:latest
|
||
container_name: platform-backend
|
||
restart: unless-stopped
|
||
depends_on:
|
||
- postgres # Запускать только после старта базы данных
|
||
env_file:
|
||
- .env # Подключаем файл с секретными переменными (пароли, ключи)
|
||
volumes: # <--- ДОБАВЬТЕ ЭТОТ РАЗДЕЛ
|
||
# Монтируем ключ в контейнер по пути, указанному в .env
|
||
- ./secrets/private.pem:/app/private.pem:ro # :ro - только для чтения
|
||
networks:
|
||
- platform-net
|
||
|
||
# 3. Вспомогательный сервис для измерения пинга
|
||
ping-helper:
|
||
image: gitea.mrixs.me/minecraft-platform/ping-helper:latest
|
||
container_name: platform-ping-helper
|
||
restart: unless-stopped
|
||
networks:
|
||
- platform-net
|
||
|
||
# 4. База данных PostgreSQL
|
||
postgres:
|
||
image: postgres:16-alpine
|
||
container_name: platform-postgres
|
||
restart: unless-stopped
|
||
volumes:
|
||
# Именованный том для хранения данных БД
|
||
- postgres_data:/var/lib/postgresql/data
|
||
# Монтируем папку со скриптами миграций для возможного ручного запуска
|
||
- ./scripts/migrations:/docker-entrypoint-initdb.d
|
||
env_file:
|
||
- .env # Пароли и имя БД также берем из .env
|
||
networks:
|
||
- platform-net
|
||
|
||
# Определяем именованные тома для хранения данных между перезапусками контейнеров
|
||
volumes:
|
||
postgres_data:
|
||
caddy_data:
|
||
caddy_config:
|
||
|
||
# Определяем общую сеть для взаимодействия контейнеров по именам сервисов
|
||
networks:
|
||
platform-net:
|
||
driver: bridge
|