diff --git a/docker-compose.temp.yml b/docker-compose.temp.yml new file mode 100644 index 0000000..3baaf72 --- /dev/null +++ b/docker-compose.temp.yml @@ -0,0 +1,74 @@ +# ───────────────────────────────────────────────────────────────────────────── +# ВРЕМЕННЫЙ ПРОД НА ПК — заглушка вместо Pi, пока он не готов. +# Поднимает forbiddenstars.ru (слот VPS 9000) с твоего ПК: поведение production, +# прод-данные в ПОСТОЯННЫХ томах (потом перенесёшь на Pi через backup/restore). +# +# Отличия от docker-compose.yml (прод на Pi): +# • локальный образ (сборка x86 на ПК), НЕ из реестра и НЕ пушится; +# • отдельный проект (name) и свои тома — не конфликтует с dev/test на этом ПК. +# Всё остальное — как у прода (APP_ENV=production, туннель на 9000, лимиты, healthcheck). +# +# Запуск: docker compose -f docker-compose.temp.yml up -d --build +# Логи: docker compose -f docker-compose.temp.yml logs -f tunnel +# Остановка: docker compose -f docker-compose.temp.yml down (тома сохраняются) +# +# ВАЖНО: слот 9000 общий с будущим прод-туннелем Pi. Перед запуском прода на Pi +# ОСТАНОВИ этот контур (down), иначе оба будут драться за VPS:9000. +# ───────────────────────────────────────────────────────────────────────────── +name: forbidden-stars-temp + +services: + app: + build: . + image: forbidden-stars:temp-prod # локальный образ x86 (на ПК); в реестр НЕ пушим + restart: unless-stopped + init: true + stop_grace_period: 30s + env_file: + - .env + environment: + APP_ENV: production # ведём себя ровно как прод + volumes: + - db-data:/data + - uploads-data:/data/uploads + - achievements-data:/data/achievements + healthcheck: + test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/api/health')"] + interval: 30s + timeout: 5s + retries: 3 + start_period: 40s + mem_limit: ${APP_MEM_LIMIT:-1g} # на ПК ресурсов больше, чем на Pi + cpus: ${APP_CPUS:-2} + security_opt: + - no-new-privileges:true + logging: + driver: json-file + options: + max-size: "10m" + max-file: "5" + + # Туннель на ПРОД-слот: VPS:${VPS_TUNNEL_PORT:-9000} → app:8000 (домен forbiddenstars.ru). + tunnel: + build: ./deploy/tunnel + image: forbidden-stars-tunnel:temp-prod + restart: unless-stopped + init: true + depends_on: + app: + condition: service_healthy + environment: + VPS_TUNNEL_HOST: ${VPS_TUNNEL_HOST:?VPS_TUNNEL_HOST is required in .env} + VPS_TUNNEL_USER: ${VPS_TUNNEL_USER:-tunnel} + VPS_TUNNEL_PORT: ${VPS_TUNNEL_PORT:-9000} # прод-слот forbiddenstars.ru + UPSTREAM: app:8000 + volumes: + - ./deploy/tunnel/id_tunnel:/key/id_tunnel:ro + mem_limit: 64m + security_opt: + - no-new-privileges:true + +volumes: + db-data: + uploads-data: + achievements-data: