License Docker PostgreSQL Node >=14
Infraestrutura PostgreSQL padronizada para projetos da ANPD com setup automatizado, detecção inteligente de porta e isolamento completo por projeto.
- 🚀 Setup em 1 comando: Configuração automática completa
- 🔌 Detecção inteligente de portas: Múltiplos projetos na mesma VM sem conflitos
- 🌍 100% cross-platform: Windows, macOS e Linux
- 🔒 Isolamento total: Containers, redes e volumes únicos por projeto
- ⚡ Zero configuração manual: Funciona automaticamente em qualquer projeto ANPD
# Método recomendado (100% compatível) curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/quick-setup.js | node # Método alternativo (download direto) curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/auto-setup.js -o setup.js && node setup.js && rm setup.js # Configurar infraestrutura npm run infra:setup # Iniciar desenvolvimento npm run dev
# Setup automático (preserva configurações existentes) curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/quick-setup.js | node # Método alternativo se necessário curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/auto-setup.js -o setup.js && node setup.js && rm setup.js # Configurar (preserva dados do .env existente) npm run infra:setup # Desenvolvimento normal npm run dev # Agora inclui o banco automaticamente
Exemplo prático: 3 projetos na mesma VM
Projeto A (backlog-dim): localhost:5432 ✅ Projeto B (controladores): localhost:5433 ✅ (auto-detectado) Projeto C (transparencia): localhost:5434 ✅ (auto-detectado)
✅ Isolamento completo: Cada projeto tem containers, redes e volumes únicos
✅ Detecção automática: Sistema encontra a próxima porta disponível
✅ Configuração persistente: Lembra da porta escolhida para sempre
npm run infra:setup # Setup automático com detecção de porta npm run infra:setup:manual # Controle total sobre configurações npm run infra:setup:force # Regenerar tudo do zero
npm run infra:up # Subir infraestrutura + pós-up opcional npm run infra:down # Parar infraestrutura npm run infra:logs # Ver logs do PostgreSQL npm run infra:status # Status dos containers
npm run dev # Inicia desenvolvimento (inclui banco) npm run infra:db:init # Setup completo do banco npm run infra:db:fresh # Reset + migrations + seed
npm run infra:psql # Conectar ao PostgreSQL npm run infra:fix # Corrigir problemas automaticamente npm run infra:update # Atualizar scripts
💡 Dica: Os scripts usam prefixo
infra:*para não interferir com comandos existentes do Prisma, Next.js, etc.
- Next.js + Prisma: Integração nativa
- NestJS + TypeORM: Variáveis detectadas automaticamente
- Spring Boot: Datasource configurado automaticamente
- Keycloak: Senhas seguras geradas automaticamente
- ✅ Windows (PowerShell, CMD, Git Bash)
- ✅ macOS (Terminal, iTerm2)
- ✅ Linux (bash, zsh, fish)
- ✅ CI/CD (GitHub Actions, GitLab CI, Jenkins)
docs/inicio-rapido.md- Primeiros passos detalhadosdocs/instalacao-projetos.md- Como usar em projetos existentes
docs/comandos.md- Referência completa de comandosdocs/gerenciamento-portas.md- Como funciona a detecção de portasdocs/compatibilidade.md- Detalhes sobre cross-platform
docs/guia-completo.md- Guia técnico completodocs/ci-cd.md- Integração com pipelinesdocs/solucao-problemas.md- Troubleshooting avançado
- Auto: Se houver
docker-compose.ymlna raiz, executa automaticamente após subir a infra - Manual: Use
--manualpara controle total - Customizado: Defina
INFRA_POST_UP_CMDpara comandos específicos
- Senhas criptográficas: Geradas automaticamente com
crypto.randomBytes() - Mascaramento de logs: Credenciais nunca aparecem em terminais/CI
- Isolamento total: Cada projeto tem containers, redes e volumes únicos
npm run infra:fix # Corrige credenciais automaticamente npm run infra:update # Atualiza scripts para versão mais recente
- 🐛 Issues: GitHub Issues
- � Discussões: GitHub Discussions
- 📖 Wiki:
docs/- Documentação completa
Uma infraestrutura. Todos os projetos ANPD. Zero configuração manual. 🎉
v0.2.1 - Documentação modernizada e consolidada
Por padrão os scripts mascaram senhas e a DATABASE_URL nos logs para evitar vazamento de segredos em CI/terminals. Se precisar exibir a URL completa use explicitamente:
# CLI flag node .infra/setup-cross-platform.cjs --show-secrets # Ou variável de ambiente SHOW_SECRETS=1 node .infra/setup-cross-platform.cjs
Logs coloridos e --verbose:
- Mensagens padrão são colorizadas para legibilidade.
- Use
--verboseouVERBOSE=1para ver stacks/erros completos quando necessário.
O projeto fornece variantes dos helpers para evitar erros como require is not defined em projetos ESM. Estratégia:
setup-cross-platformtenta carregar a variante mais adequada em runtime.- Preferência:
.cjsquandorequireexiste,.mjsviaimport()em runtimes ESM. - Há um fallback para
port-manager.cjsquando necessário.
Isso permite rodar os helpers em projetos com type: "module" ou CommonJS sem alterações manuais.
quick-fix-volumes— corrige nomes de volumes inválidos (underscore no início).fix-stack-conflict— adicionaname: <projeto>-stackaoinfra-db/docker-compose.ymlpara isolar stacks.fix-credentials— regeneradocker-compose.ymle.envda infra com credenciais corretas.
Exemplos:
- Os projetos consumidores geram dinamicamente
infra-db/init/01-create-app-database.shdurante oinfra:setup. - Este repositório não mantém scripts
init/versionados para evitar acoplamento e credenciais fixas. - O bind
./init:/docker-entrypoint-initdb.dpermanece; se a pasta estiver vazia, o PostgreSQL apenas ignora.
curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/quick-fix-volumes.js | node curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/fix-stack-conflict.js | node
- Mantenha
package.jsonna raiz do projeto — os scriptsinfra:*são adicionados automaticamente. - Use
.envpara configurarDATABASE_URLquando for necessário manter conexão local. - Para contribuir, execute o linter/formatador localmente:
npm run lint npm run format
O repositório inclui configuração recomendada do VS Code (.vscode/) com Prettier e EditorConfig.
- Porta em uso:
npm run infra:setup:forceounpm run infra:debug. - Erro de autenticação:
npm run infra:fix. - Script npm faltando: execute
smart-update(acima) para popularpackage.json.
Para problemas mais complexos veja docs/:
docs/guia-completo.md— passo a passodocs/port-management.md— detalhes da detecção de portasdocs/troubleshooting.md— problemas comuns e soluções
- Issues: https://github.com/anpdgovbr/docker-infra-pg/issues
- Discussions: https://github.com/anpdgovbr/docker-infra-pg/discussions
- Documentação completa em
docs/
Versão atual: v0.2.0 — documentação consolidada para uso local e CI.