Files
netrunner-backend/docker-compose.dev-remote.yml
T
nineap 1a26403afb Переключить dev Caddy на порт 443 вместо 8443
Telegram Login Widget в браузере требует именно порт 443 — его CSP
frame-ancestors от oauth.telegram.org не учитывает порт домена и всегда
подразумевает дефолтный порт схемы, поэтому на 8443 виджет рендерился, но
iframe блокировался как cross-origin. VPN-нода, ранее занимавшая 443 на
dev VPS, перенесена на другой порт, так что конфликта больше нет.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-05 20:00:09 +07:00

112 lines
3.6 KiB
YAML

# =====================================================================
# DEV (remote VPS) — тот же принцип, что и прод: тянем готовый образ из
# GHCR и запускаем. Без мониторинга (prometheus/loki/promtail/grafana) —
# только бэк + бот + БД + Redis.
# =====================================================================
services:
# One-shot: применяет миграции и завершается. Требует только DATABASE_URL.
migrate:
image: ${IMAGE:-ghcr.io/nineap/netrunner-control-plane:latest}
container_name: netrunner-migrate-dev
command: ["./netrunner-control-plane", "--migrate"]
environment:
- DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@db:5432/${DB_NAME}
depends_on:
db:
condition: service_healthy
restart: "no"
networks:
- netrunner_grid_dev
app:
image: ${IMAGE:-ghcr.io/nineap/netrunner-control-plane:latest}
container_name: netrunner-app-dev-remote
restart: always
ports:
- "8080:8080"
env_file:
- .env
environment:
- APP_ENV=development
- FRONTEND_DIR=/app/frontend/dist
- DATABASE_URL=postgres://${DB_USER}:${DB_PASSWORD}@db:5432/${DB_NAME}
volumes:
- ./keys:/app/keys:ro
depends_on:
db:
condition: service_healthy
redis:
condition: service_healthy
migrate:
condition: service_completed_successfully
healthcheck:
test: ["CMD", "curl", "-fsS", "http://localhost:8080/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 20s
networks:
- netrunner_grid_dev
db:
image: postgres:16-alpine
container_name: netrunner-db-dev-remote
restart: always
environment:
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_USER: ${DB_USER}
POSTGRES_DB: ${DB_NAME}
volumes:
- netrunner_db_data_dev:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER} -d ${DB_NAME}"]
interval: 5s
timeout: 5s
retries: 5
networks:
- netrunner_grid_dev
redis:
image: redis:7-alpine
container_name: netrunner-redis-dev-remote
restart: always
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
networks:
- netrunner_grid_dev
# Реверс-прокси с реальным TLS (DNS-01 через Cloudflare) — нужен для
# Telegram Web Apps (требуют https://) и для Telegram Login Widget в
# обычном браузере (требует именно порт 443 — см. Caddyfile.dev). VPN-нода,
# которая раньше занимала 443 на этом VPS, перенесена на другой порт.
#
# Образ собирается в GitHub Actions (build.yml::build-caddy), не на VPS:
# компиляция xcaddy (Go, тянет много модулей) на этой машине один раз уже
# не уложилась в таймаут SSH-деплоя и уронила весь прогон.
caddy:
image: ${CADDY_IMAGE:-ghcr.io/nineap/netrunner-caddy-cloudflare:latest}
container_name: netrunner-caddy-dev
restart: always
ports:
- "443:443"
environment:
- CF_API_TOKEN=${CF_API_TOKEN}
volumes:
- ./Caddyfile.dev:/etc/caddy/Caddyfile:ro
- caddy_data_dev:/data
- caddy_config_dev:/config
depends_on:
- app
networks:
- netrunner_grid_dev
networks:
netrunner_grid_dev:
driver: bridge
volumes:
netrunner_db_data_dev:
caddy_data_dev:
caddy_config_dev: