postgres:16-alpine
Pasta: /opt/server/infra/postgres/
Container name: postgres
Endereço interno: postgres:5432
Para que serve
Banco Postgres único, compartilhado entre todos os projetos. Cada projeto recebe seu próprio database + role (usuário) com privilégios isolados — nunca compartilhamos credenciais entre projetos.Variáveis
infra/postgres/.env (gerado pelo bootstrap):
Volume
tar da pasta data/, ou pg_dumpall rodando dentro do container.
Sem porta exposta
Postgres não publica porta no host. Acesso apenas viaserver_net:
- De outro container:
postgres:5432 - Do host (debug):
docker compose exec -it postgres psql -U postgres
ssh -L 5432:localhost:5432 vinicius@servidor e conecte em localhost:5432.
Subir
pg_isready) garante que está pronto antes de ser marcado healthy.
Provisionar DB para um projeto
Use ocreate-db.sh (descrito em Criar bancos):
- Database
meuprojeto - Role
meuprojetocom senha aleatória - Salva credenciais em
secrets/meuprojeto.env
Padrão de uso pelos projetos
Nodocker-compose.yml do projeto:
secrets/<projeto>.env para dentro da pasta do projeto.