68 lines
2.2 KiB
YAML
68 lines
2.2 KiB
YAML
name: convite
|
|
|
|
services:
|
|
db:
|
|
image: postgres:17-alpine
|
|
restart: unless-stopped
|
|
environment:
|
|
POSTGRES_DB: ${POSTGRES_DB:-convite}
|
|
POSTGRES_USER: ${POSTGRES_USER:-convite}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?defina POSTGRES_PASSWORD no .env}
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
healthcheck:
|
|
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
|
interval: 5s
|
|
timeout: 5s
|
|
retries: 10
|
|
# Sem porta publicada: o banco só é acessível pela rede interna do compose.
|
|
# Para acessar do host (ex.: db:studio), descomente:
|
|
# ports:
|
|
# - "127.0.0.1:5432:5432"
|
|
|
|
# Serviço Python que personaliza os PDFs dos convites. Sem porta publicada: só o app acessa,
|
|
# pela rede interna do compose (http://pdf-service:8000).
|
|
pdf-service:
|
|
build: ./pdf-service
|
|
restart: unless-stopped
|
|
environment:
|
|
STORAGE_DIR: /storage
|
|
# Base do link gravado em cada PDF: <INVITE_LINK_BASE_URL>/r/<token>.
|
|
# Opcional: vazia, o serviço usa o APP_URL.
|
|
APP_URL: ${APP_URL:-}
|
|
INVITE_LINK_BASE_URL: ${INVITE_LINK_BASE_URL:-}
|
|
# Links do PDF modelo que contêm este trecho são trocados pelo link do convite
|
|
INVITE_LINK_PATTERN: ${INVITE_LINK_PATTERN:-com.br/r/}
|
|
volumes:
|
|
- app-storage:/storage
|
|
healthcheck:
|
|
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health', timeout=3)"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 5
|
|
|
|
app:
|
|
build: .
|
|
restart: unless-stopped
|
|
depends_on:
|
|
db:
|
|
condition: service_healthy
|
|
# Só a geração de PDFs depende dele; o convite e o RSVP funcionam mesmo com ele fora do ar
|
|
pdf-service:
|
|
condition: service_started
|
|
env_file: .env
|
|
environment:
|
|
# Sobrescreve o DATABASE_URL do .env: dentro do compose o host do banco é "db"
|
|
DATABASE_URL: postgres://${POSTGRES_USER:-convite}:${POSTGRES_PASSWORD}@db:5432/${POSTGRES_DB:-convite}
|
|
PDF_SERVICE_URL: http://pdf-service:8000
|
|
STORAGE_DIR: /storage
|
|
volumes:
|
|
# PDFs modelo e gerados (compartilhado com o pdf-service)
|
|
- app-storage:/storage
|
|
ports:
|
|
- "${APP_PORT:-3000}:3000"
|
|
|
|
volumes:
|
|
pgdata:
|
|
app-storage:
|