prompt inicial do projeto completo

This commit is contained in:
2026-07-22 18:45:09 -03:00
parent 6fb920d333
commit b9ede753c4
12 changed files with 64 additions and 18 deletions

View File

@@ -43,8 +43,9 @@ services:
image: postgis/postgis:17-3.5
environment:
POSTGRES_DB: portaria
POSTGRES_USER: portaria
POSTGRES_USER: portaria # dono do schema — usado só pelo Flyway
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_APP_PASSWORD: ${POSTGRES_APP_PASSWORD} # lido por init/02-roles.sh → cria portaria_app
volumes:
- pgdata:/var/lib/postgresql/data
- ./postgres/init:/docker-entrypoint-initdb.d:ro
@@ -60,9 +61,13 @@ services:
environment:
SPRING_PROFILES_ACTIVE: prod
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/portaria
SPRING_DATASOURCE_USERNAME: portaria
SPRING_DATASOURCE_PASSWORD: ${POSTGRES_PASSWORD}
LIVEKIT_URL: ws://livekit:7880
# aplicação NUNCA conecta como dona do schema — senão REVOKE e RLS são inócuos (02 §8)
SPRING_DATASOURCE_USERNAME: portaria_app
SPRING_DATASOURCE_PASSWORD: ${POSTGRES_APP_PASSWORD}
SPRING_FLYWAY_USER: portaria
SPRING_FLYWAY_PASSWORD: ${POSTGRES_PASSWORD}
# livekit está em network_mode:host — o nome de serviço não resolve; alcançado via gateway do host
LIVEKIT_URL: ws://host.docker.internal:7880
LIVEKIT_API_KEY: ${LIVEKIT_API_KEY}
LIVEKIT_API_SECRET: ${LIVEKIT_API_SECRET}
STORAGE_ENDPOINT: http://minio:9000
@@ -73,6 +78,8 @@ services:
OTEL_EXPORTER_OTLP_ENDPOINT: http://otel-collector:4317
volumes:
- ./secrets:/secrets:ro
extra_hosts:
- host.docker.internal:host-gateway
depends_on:
postgres: { condition: service_healthy }
minio: { condition: service_started }
@@ -110,6 +117,8 @@ services:
redis: # exclusivo do LiveKit e do rate limit
image: redis:7-alpine # NUNCA para dados que não podem se perder
command: redis-server --save "" --appendonly no
ports:
- 127.0.0.1:6379:6379 # livekit está em host network e alcança via localhost; nunca exponha fora do host
restart: unless-stopped
minio:
@@ -185,6 +194,8 @@ room:
**Redis não é opcional** com múltiplas instâncias do LiveKit: sem ele, o estado das salas se divide silenciosamente entre nós e dois participantes da mesma sala não se enxergam.
**Capacidade de relay do coturn:** a faixa 4916049200 são 40 portas ≈ **20 chamadas simultâneas via TURN**. Suficiente para o piloto (TURN só entra quando o UDP direto falha, tipicamente 1020% das chamadas), mas amplie a faixa em produção junto com o firewall.
## 4. Dimensionamento de banda
Uma chamada de portaria tem 2 participantes, vídeo em 480p a ~600kbps mais áudio. O SFU recebe e reenvia:
@@ -218,6 +229,7 @@ GH_OWNER=sua-org
TAG=latest
POSTGRES_PASSWORD=
POSTGRES_APP_PASSWORD=
LIVEKIT_API_KEY=
LIVEKIT_API_SECRET=
TURN_SECRET=