Files
platform/docker-compose.yml
Vladimir Zagainov 707b696839
Some checks failed
continuous-integration/drone/push Build is failing
feat(backend): update to profile signing; configure rsa key
2025-06-15 17:10:27 +03:00

77 lines
3.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Версия синтаксиса 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