Files
scoreodonto.com/docker-compose.yml
T
VPS 4 Builder 3aa6a444dc security(infra): remove senhas hardcoded do docker-compose
- Senha do banco deixa de ter default no compose: vem de SCOREO_DB_PASS (.env raiz
  em DEV; provisionar fora do git em PROD). `:?` faz o up falhar se faltar (fail-fast).
- DRAGONFLY_URL (com senha) sai do compose e passa a vir do env_file backend/.env.
- Host/usuário/banco mantêm default (não são segredo).
- Validado em DEV: db (pgdev) ok, cache ok, login ok.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-19 14:36:38 +02:00

82 lines
2.6 KiB
YAML

services:
nginx:
image: nginx:alpine
restart: always
ports:
- "8020:80"
volumes:
- "./nginx/default.conf:/etc/nginx/conf.d/default.conf:ro"
labels:
- "traefik.enable=true"
# Roteador de Produção (scoreodonto.com)
- "traefik.http.routers.scoreodonto-prod.rule=Host(`scoreodonto.com`) || Host(`www.scoreodonto.com`)"
- "traefik.http.routers.scoreodonto-prod.entrypoints=websecure"
- "traefik.http.routers.scoreodonto-prod.tls.certresolver=le"
- "traefik.http.services.scoreodonto-prod.loadbalancer.server.port=80"
- "traefik.docker.network=web"
networks:
- soc
- web
depends_on:
- scoreodonto-backend
- scoreodonto-frontend
scoreodonto-backend:
build:
context: "./backend"
dockerfile: Dockerfile
args:
APP_VERSION: ${APP_VERSION:-dev}
GIT_COMMIT: ${GIT_COMMIT:-dev}
BUILD_TIME: ${BUILD_TIME:-}
APP_ENV: ${APP_ENV:-DEV}
restart: always
env_file:
- "./backend/.env"
environment:
- BAILEYS_ENGINE=infinite
- PORT=8018
- NODE_ENV=production
# Senha do banco vem do ambiente (.env raiz em DEV; provisionado fora do git em PROD).
# `:?` falha o `up` se a senha não estiver definida — evita subir com senha vazia/errada.
# Host/usuário/banco mantêm default (não são segredo); só a senha é obrigatória via env.
- DATABASE_URL=postgresql://${SCOREO_DB_USER:-scoreodonto_user}:${SCOREO_DB_PASS:?defina SCOREO_DB_PASS no .env}@${SCOREO_DB_HOST:-10.99.0.3}:5432/${SCOREO_DB_NAME:-scoreodonto}?schema=public
# DRAGONFLY_URL (com senha) vem do env_file backend/.env — não fica em texto no compose.
- NATS_URL=nats://10.99.0.3:4222
- TEMPORAL_ADDRESS=10.99.0.3:7233
- BAILEYS_SESSIONS_PATH=/app/sessions
- APP_URL=https://scoreodonto.com
- GOOGLE_REDIRECT_URI=https://scoreodonto.com/api/oauth2callback
volumes:
- "/home/deploy/scoreodonto-sessions:/app/sessions"
- "/home/deploy/scoreodonto-media:/app/media"
- "./plugins:/app/plugins"
networks:
- soc
- web
scoreodonto-frontend:
build:
context: "."
dockerfile: frontend/Dockerfile
args:
GIT_COMMIT: ${GIT_COMMIT:-dev}
BUILD_TIME: ${BUILD_TIME:-}
APP_ENV: ${APP_ENV:-DEV}
restart: always
env_file:
- "./frontend/.env.production.local"
environment:
- PORT=3013
- NODE_ENV=production
- NEXT_PUBLIC_API_URL=https://scoreodonto.com/api
networks:
- soc
- web
networks:
soc:
external: true
web:
external: true