feat: configure docker-compose, caddy and drone-ci

This commit is contained in:
2025-06-14 19:59:25 +03:00
commit f85203a76e
4 changed files with 226 additions and 0 deletions

73
docker-compose.yml Normal file
View File

@@ -0,0 +1,73 @@
# Версия синтаксиса 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 # Подключаем файл с секретными переменными (пароли, ключи)
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