- Create SKINS_DIR on startup to prevent upload errors\n- Add cdn_skins volume to docker-compose for persistence and Caddy serving\n- Update watchtower image to nickfedor/watchtower for Docker API compatibility\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
85 lines
2.1 KiB
YAML
85 lines
2.1 KiB
YAML
# MrixsCraft — Production Docker Compose
|
|
# Usage: docker compose up -d
|
|
# Monitoring (when ready): docker compose --profile monitoring up -d
|
|
|
|
services:
|
|
caddy:
|
|
image: caddy:2-alpine
|
|
container_name: mc-caddy
|
|
restart: unless-stopped
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./Caddyfile:/etc/caddy/Caddyfile:ro
|
|
- caddy_data:/data
|
|
- caddy_config:/config
|
|
- cdn_files:/var/www/cdn/files:ro
|
|
- cdn_skins:/var/www/cdn/skins:ro
|
|
|
|
backend:
|
|
image: gitea.mrixs.me/mrixs/mrixscraft-server:latest
|
|
container_name: mc-backend
|
|
restart: unless-stopped
|
|
environment:
|
|
SERVER_PORT: 8080
|
|
DATABASE_URL: postgres://mcuser:${DB_PASSWORD}@postgres:5432/mcserver?sslmode=disable
|
|
CI_TOKEN: ${CI_TOKEN}
|
|
CAS_DIR: /var/www/cdn/files
|
|
SKINS_DIR: /var/www/cdn/skins
|
|
JWT_SECRET: ${JWT_SECRET}
|
|
BASE_URL: https://minecraft.mrixs.me
|
|
volumes:
|
|
- cdn_files:/var/www/cdn/files
|
|
- cdn_skins:/var/www/cdn/skins
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
expose:
|
|
- "8080"
|
|
labels:
|
|
- "com.centurylinklabs.watchtower.enable=true"
|
|
|
|
postgres:
|
|
image: postgres:16-alpine
|
|
container_name: mc-postgres
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: mcserver
|
|
POSTGRES_USER: mcuser
|
|
POSTGRES_PASSWORD: ${DB_PASSWORD}
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
- ./migrations:/docker-entrypoint-initdb.d:ro
|
|
- ./backups:/backups
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U mcuser -d mcserver"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
expose:
|
|
- "5432"
|
|
|
|
watchtower:
|
|
image: nickfedor/watchtower
|
|
container_name: mc-watchtower
|
|
restart: unless-stopped
|
|
volumes:
|
|
- /var/run/docker.sock:/var/run/docker.sock
|
|
environment:
|
|
WATCHTOWER_CLEANUP: "true"
|
|
WATCHTOWER_POLL_INTERVAL: 300
|
|
WATCHTOWER_LABEL_ENABLE: "true"
|
|
|
|
volumes:
|
|
pgdata:
|
|
driver: local
|
|
cdn_files:
|
|
driver: local
|
|
cdn_skins:
|
|
driver: local
|
|
caddy_data:
|
|
driver: local
|
|
caddy_config:
|
|
driver: local
|