https://github.com/anpdgovbr/docker-infra-pg
Ambiente Docker para um PostgreSQL 15 puro e um pgAdmin4
https://github.com/anpdgovbr/docker-infra-pg
anpd devcontainer docker pgadmin postgres
Last synced: 11 days ago
JSON representation
Ambiente Docker para um PostgreSQL 15 puro e um pgAdmin4
- Host: GitHub
- URL: https://github.com/anpdgovbr/docker-infra-pg
- Owner: anpdgovbr
- Created: 2025-07-11T17:37:17.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-08-11T17:36:47.000Z (9 months ago)
- Last Synced: 2025-08-11T19:34:55.303Z (9 months ago)
- Topics: anpd, devcontainer, docker, pgadmin, postgres
- Language: JavaScript
- Size: 242 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
[](https://github.com/anpdgovbr/docker-infra-pg/blob/main/LICENSE)
[](https://www.docker.com/)
[](https://www.postgresql.org/)
[](https://nodejs.org/)
# 🐘 Docker PostgreSQL Infrastructure ANPD
> **Infraestrutura PostgreSQL padronizada para projetos da ANPD com setup automatizado, detecção inteligente de porta e isolamento completo por projeto.**
## ✨ Principais Recursos
- 🚀 **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
## 🚀 Quick Start
### Para novos projetos
```bash
# 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
```
### Para projetos existentes
```bash
# 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
```
## � Múltiplos Projetos, Zero Conflitos
**Exemplo prático: 3 projetos na mesma VM**
```bash
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
## 📋 Comandos Essenciais
### Setup e configuração
```bash
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
```
### Uso diário
```bash
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
```
### Desenvolvimento
```bash
npm run dev # Inicia desenvolvimento (inclui banco)
npm run infra:db:init # Setup completo do banco
npm run infra:db:fresh # Reset + migrations + seed
```
### Utilitários
```bash
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.
## 🌍 Multi-Stack e Cross-Platform
### Compatibilidade automática com frameworks
- **Next.js + Prisma**: Integração nativa
- **NestJS + TypeORM**: Variáveis detectadas automaticamente
- **Spring Boot**: Datasource configurado automaticamente
- **Keycloak**: Senhas seguras geradas automaticamente
### Suporte completo a plataformas
- ✅ **Windows** (PowerShell, CMD, Git Bash)
- ✅ **macOS** (Terminal, iTerm2)
- ✅ **Linux** (bash, zsh, fish)
- ✅ **CI/CD** (GitHub Actions, GitLab CI, Jenkins)
## 📚 Documentação Detalhada
### 🟢 Iniciante
- [`docs/inicio-rapido.md`](docs/inicio-rapido.md) - Primeiros passos detalhados
- [`docs/instalacao-projetos.md`](docs/instalacao-projetos.md) - Como usar em projetos existentes
### 🟡 Intermediário
- [`docs/comandos.md`](docs/comandos.md) - Referência completa de comandos
- [`docs/gerenciamento-portas.md`](docs/gerenciamento-portas.md) - Como funciona a detecção de portas
- [`docs/compatibilidade.md`](docs/compatibilidade.md) - Detalhes sobre cross-platform
### 🔴 Avançado
- [`docs/guia-completo.md`](docs/guia-completo.md) - Guia técnico completo
- [`docs/ci-cd.md`](docs/ci-cd.md) - Integração com pipelines
- [`docs/solucao-problemas.md`](docs/solucao-problemas.md) - Troubleshooting avançado
## ⚡ Recursos Avançados
### Pós-up Hook Automático
- **Auto**: Se houver `docker-compose.yml` na raiz, executa automaticamente após subir a infra
- **Manual**: Use `--manual` para controle total
- **Customizado**: Defina `INFRA_POST_UP_CMD` para comandos específicos
### Segurança Integrada
- **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
### Correções Automáticas
```bash
npm run infra:fix # Corrige credenciais automaticamente
npm run infra:update # Atualiza scripts para versão mais recente
```
## 📞 Suporte e Contribuição
- 🐛 **Issues**: [GitHub Issues](https://github.com/anpdgovbr/docker-infra-pg/issues)
- � **Discussões**: [GitHub Discussions](https://github.com/anpdgovbr/docker-infra-pg/discussions)
- 📖 **Wiki**: [`docs/`](docs/) - Documentação completa
---
**Uma infraestrutura. Todos os projetos ANPD. Zero configuração manual.** 🎉
_v0.2.1 - Documentação modernizada e consolidada_
## Segurança — mascaramento de secrets
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:
```bash
# 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 `--verbose` ou `VERBOSE=1` para ver stacks/erros completos quando necessário.
---
## Compatibilidade CJS / ESM (port-manager)
O projeto fornece variantes dos helpers para evitar erros como `require is not defined` em projetos ESM. Estratégia:
- `setup-cross-platform` tenta carregar a variante mais adequada em runtime.
- Preferência: `.cjs` quando `require` existe, `.mjs` via `import()` em runtimes ESM.
- Há um fallback para `port-manager.cjs` quando necessário.
Isso permite rodar os helpers em projetos com `type: "module"` ou CommonJS sem alterações manuais.
---
## Ferramentas de correção rápidas
- `quick-fix-volumes` — corrige nomes de volumes inválidos (underscore no início).
- `fix-stack-conflict` — adiciona `name: -stack` ao `infra-db/docker-compose.yml` para isolar stacks.
- `fix-credentials` — regenera `docker-compose.yml` e `.env` da infra com credenciais corretas.
Exemplos:
---
## Sobre scripts de inicialização (init)
- Os projetos consumidores geram dinamicamente `infra-db/init/01-create-app-database.sh` durante o `infra:setup`.
- Este repositório não mantém scripts `init/` versionados para evitar acoplamento e credenciais fixas.
- O bind `./init:/docker-entrypoint-initdb.d` permanece; se a pasta estiver vazia, o PostgreSQL apenas ignora.
```bash
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
```
---
## Boas práticas para desenvolvimento
- Mantenha `package.json` na raiz do projeto — os scripts `infra:*` são adicionados automaticamente.
- Use `.env` para configurar `DATABASE_URL` quando for necessário manter conexão local.
- Para contribuir, execute o linter/formatador localmente:
```bash
npm run lint
npm run format
```
O repositório inclui configuração recomendada do VS Code (`.vscode/`) com Prettier e EditorConfig.
---
## Troubleshooting rápido
- Porta em uso: `npm run infra:setup:force` ou `npm run infra:debug`.
- Erro de autenticação: `npm run infra:fix`.
- Script npm faltando: execute `smart-update` (acima) para popular `package.json`.
Para problemas mais complexos veja `docs/`:
- `docs/guia-completo.md` — passo a passo
- `docs/port-management.md` — detalhes da detecção de portas
- `docs/troubleshooting.md` — problemas comuns e soluções
---
## Contribuição e suporte
- 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.