{"id":30172913,"url":"https://github.com/anpdgovbr/docker-infra-pg","last_synced_at":"2026-05-09T03:38:30.323Z","repository":{"id":306985309,"uuid":"1018151191","full_name":"anpdgovbr/docker-infra-pg","owner":"anpdgovbr","description":"Ambiente Docker para um PostgreSQL 15 puro e um pgAdmin4","archived":false,"fork":false,"pushed_at":"2025-08-11T17:36:47.000Z","size":248,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-11T19:34:55.303Z","etag":null,"topics":["anpd","devcontainer","docker","pgadmin","postgres"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/anpdgovbr.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-07-11T17:37:17.000Z","updated_at":"2025-08-11T17:36:50.000Z","dependencies_parsed_at":"2025-07-28T21:29:48.502Z","dependency_job_id":"e9c439ef-f96d-4ee0-8922-f0b0ca33b5dd","html_url":"https://github.com/anpdgovbr/docker-infra-pg","commit_stats":null,"previous_names":["anpdgovbr/docker-infra-pg"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/anpdgovbr/docker-infra-pg","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anpdgovbr%2Fdocker-infra-pg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anpdgovbr%2Fdocker-infra-pg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anpdgovbr%2Fdocker-infra-pg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anpdgovbr%2Fdocker-infra-pg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/anpdgovbr","download_url":"https://codeload.github.com/anpdgovbr/docker-infra-pg/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/anpdgovbr%2Fdocker-infra-pg/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269970135,"owners_count":24505477,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-11T02:00:10.019Z","response_time":75,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anpd","devcontainer","docker","pgadmin","postgres"],"created_at":"2025-08-11T23:18:15.623Z","updated_at":"2026-05-09T03:38:30.317Z","avatar_url":"https://github.com/anpdgovbr.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![License](https://img.shields.io/github/license/anpdgovbr/docker-infra-pg)](https://github.com/anpdgovbr/docker-infra-pg/blob/main/LICENSE)\n[![Docker](https://img.shields.io/badge/docker-%20-blue?logo=docker)](https://www.docker.com/)\n[![PostgreSQL](https://img.shields.io/badge/postgresql-%3E%3D13-blue?logo=postgresql)](https://www.postgresql.org/)\n[![Node \u003e=14](https://img.shields.io/badge/node-%3E%3D14-brightgreen)](https://nodejs.org/)\n\n# 🐘 Docker PostgreSQL Infrastructure ANPD\n\n\u003e **Infraestrutura PostgreSQL padronizada para projetos da ANPD com setup automatizado, detecção inteligente de porta e isolamento completo por projeto.**\n\n## ✨ Principais Recursos\n\n- 🚀 **Setup em 1 comando**: Configuração automática completa\n- 🔌 **Detecção inteligente de portas**: Múltiplos projetos na mesma VM sem conflitos\n- 🌍 **100% cross-platform**: Windows, macOS e Linux\n- 🔒 **Isolamento total**: Containers, redes e volumes únicos por projeto\n- ⚡ **Zero configuração manual**: Funciona automaticamente em qualquer projeto ANPD\n\n## 🚀 Quick Start\n\n### Para novos projetos\n\n```bash\n# Método recomendado (100% compatível)\ncurl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/quick-setup.js | node\n\n# Método alternativo (download direto)\ncurl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/auto-setup.js -o setup.js \u0026\u0026 node setup.js \u0026\u0026 rm setup.js\n\n# Configurar infraestrutura\nnpm run infra:setup\n\n# Iniciar desenvolvimento\nnpm run dev\n```\n\n### Para projetos existentes\n\n```bash\n# Setup automático (preserva configurações existentes)\ncurl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/quick-setup.js | node\n\n# Método alternativo se necessário\ncurl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/auto-setup.js -o setup.js \u0026\u0026 node setup.js \u0026\u0026 rm setup.js\n\n# Configurar (preserva dados do .env existente)\nnpm run infra:setup\n\n# Desenvolvimento normal\nnpm run dev  # Agora inclui o banco automaticamente\n```\n\n## � Múltiplos Projetos, Zero Conflitos\n\n**Exemplo prático: 3 projetos na mesma VM**\n\n```bash\nProjeto A (backlog-dim):     localhost:5432  ✅\nProjeto B (controladores):   localhost:5433  ✅ (auto-detectado)\nProjeto C (transparencia):   localhost:5434  ✅ (auto-detectado)\n```\n\n✅ **Isolamento completo**: Cada projeto tem containers, redes e volumes únicos  \n✅ **Detecção automática**: Sistema encontra a próxima porta disponível  \n✅ **Configuração persistente**: Lembra da porta escolhida para sempre\n\n## 📋 Comandos Essenciais\n\n### Setup e configuração\n\n```bash\nnpm run infra:setup         # Setup automático com detecção de porta\nnpm run infra:setup:manual  # Controle total sobre configurações\nnpm run infra:setup:force   # Regenerar tudo do zero\n```\n\n### Uso diário\n\n```bash\nnpm run infra:up            # Subir infraestrutura + pós-up opcional\nnpm run infra:down          # Parar infraestrutura\nnpm run infra:logs          # Ver logs do PostgreSQL\nnpm run infra:status        # Status dos containers\n```\n\n### Desenvolvimento\n\n```bash\nnpm run dev                 # Inicia desenvolvimento (inclui banco)\nnpm run infra:db:init       # Setup completo do banco\nnpm run infra:db:fresh      # Reset + migrations + seed\n```\n\n### Utilitários\n\n```bash\nnpm run infra:psql          # Conectar ao PostgreSQL\nnpm run infra:fix           # Corrigir problemas automaticamente\nnpm run infra:update        # Atualizar scripts\n```\n\n\u003e 💡 **Dica**: Os scripts usam prefixo `infra:*` para não interferir com comandos existentes do Prisma, Next.js, etc.\n\n## 🌍 Multi-Stack e Cross-Platform\n\n### Compatibilidade automática com frameworks\n\n- **Next.js + Prisma**: Integração nativa\n- **NestJS + TypeORM**: Variáveis detectadas automaticamente\n- **Spring Boot**: Datasource configurado automaticamente\n- **Keycloak**: Senhas seguras geradas automaticamente\n\n### Suporte completo a plataformas\n\n- ✅ **Windows** (PowerShell, CMD, Git Bash)\n- ✅ **macOS** (Terminal, iTerm2)\n- ✅ **Linux** (bash, zsh, fish)\n- ✅ **CI/CD** (GitHub Actions, GitLab CI, Jenkins)\n\n## 📚 Documentação Detalhada\n\n### 🟢 Iniciante\n\n- [`docs/inicio-rapido.md`](docs/inicio-rapido.md) - Primeiros passos detalhados\n- [`docs/instalacao-projetos.md`](docs/instalacao-projetos.md) - Como usar em projetos existentes\n\n### 🟡 Intermediário\n\n- [`docs/comandos.md`](docs/comandos.md) - Referência completa de comandos\n- [`docs/gerenciamento-portas.md`](docs/gerenciamento-portas.md) - Como funciona a detecção de portas\n- [`docs/compatibilidade.md`](docs/compatibilidade.md) - Detalhes sobre cross-platform\n\n### 🔴 Avançado\n\n- [`docs/guia-completo.md`](docs/guia-completo.md) - Guia técnico completo\n- [`docs/ci-cd.md`](docs/ci-cd.md) - Integração com pipelines\n- [`docs/solucao-problemas.md`](docs/solucao-problemas.md) - Troubleshooting avançado\n\n## ⚡ Recursos Avançados\n\n### Pós-up Hook Automático\n\n- **Auto**: Se houver `docker-compose.yml` na raiz, executa automaticamente após subir a infra\n- **Manual**: Use `--manual` para controle total\n- **Customizado**: Defina `INFRA_POST_UP_CMD` para comandos específicos\n\n### Segurança Integrada\n\n- **Senhas criptográficas**: Geradas automaticamente com `crypto.randomBytes()`\n- **Mascaramento de logs**: Credenciais nunca aparecem em terminais/CI\n- **Isolamento total**: Cada projeto tem containers, redes e volumes únicos\n\n### Correções Automáticas\n\n```bash\nnpm run infra:fix           # Corrige credenciais automaticamente\nnpm run infra:update        # Atualiza scripts para versão mais recente\n```\n\n## 📞 Suporte e Contribuição\n\n- 🐛 **Issues**: [GitHub Issues](https://github.com/anpdgovbr/docker-infra-pg/issues)\n- � **Discussões**: [GitHub Discussions](https://github.com/anpdgovbr/docker-infra-pg/discussions)\n- 📖 **Wiki**: [`docs/`](docs/) - Documentação completa\n\n---\n\n**Uma infraestrutura. Todos os projetos ANPD. Zero configuração manual.** 🎉\n\n_v0.2.1 - Documentação modernizada e consolidada_\n\n## Segurança — mascaramento de secrets\n\nPor 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:\n\n```bash\n# CLI flag\nnode .infra/setup-cross-platform.cjs --show-secrets\n\n# Ou variável de ambiente\nSHOW_SECRETS=1 node .infra/setup-cross-platform.cjs\n```\n\nLogs coloridos e `--verbose`:\n\n- Mensagens padrão são colorizadas para legibilidade.\n- Use `--verbose` ou `VERBOSE=1` para ver stacks/erros completos quando necessário.\n\n---\n\n## Compatibilidade CJS / ESM (port-manager)\n\nO projeto fornece variantes dos helpers para evitar erros como `require is not defined` em projetos ESM. Estratégia:\n\n- `setup-cross-platform` tenta carregar a variante mais adequada em runtime.\n- Preferência: `.cjs` quando `require` existe, `.mjs` via `import()` em runtimes ESM.\n- Há um fallback para `port-manager.cjs` quando necessário.\n\nIsso permite rodar os helpers em projetos com `type: \"module\"` ou CommonJS sem alterações manuais.\n\n---\n\n## Ferramentas de correção rápidas\n\n- `quick-fix-volumes` — corrige nomes de volumes inválidos (underscore no início).\n- `fix-stack-conflict` — adiciona `name: \u003cprojeto\u003e-stack` ao `infra-db/docker-compose.yml` para isolar stacks.\n- `fix-credentials` — regenera `docker-compose.yml` e `.env` da infra com credenciais corretas.\n\nExemplos:\n\n---\n\n## Sobre scripts de inicialização (init)\n\n- Os projetos consumidores geram dinamicamente `infra-db/init/01-create-app-database.sh` durante o `infra:setup`.\n- Este repositório não mantém scripts `init/` versionados para evitar acoplamento e credenciais fixas.\n- O bind `./init:/docker-entrypoint-initdb.d` permanece; se a pasta estiver vazia, o PostgreSQL apenas ignora.\n\n```bash\ncurl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/quick-fix-volumes.js | node\ncurl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/fix-stack-conflict.js | node\n```\n\n---\n\n## Boas práticas para desenvolvimento\n\n- Mantenha `package.json` na raiz do projeto — os scripts `infra:*` são adicionados automaticamente.\n- Use `.env` para configurar `DATABASE_URL` quando for necessário manter conexão local.\n- Para contribuir, execute o linter/formatador localmente:\n\n```bash\nnpm run lint\nnpm run format\n```\n\nO repositório inclui configuração recomendada do VS Code (`.vscode/`) com Prettier e EditorConfig.\n\n---\n\n## Troubleshooting rápido\n\n- Porta em uso: `npm run infra:setup:force` ou `npm run infra:debug`.\n- Erro de autenticação: `npm run infra:fix`.\n- Script npm faltando: execute `smart-update` (acima) para popular `package.json`.\n\nPara problemas mais complexos veja `docs/`:\n\n- `docs/guia-completo.md` — passo a passo\n- `docs/port-management.md` — detalhes da detecção de portas\n- `docs/troubleshooting.md` — problemas comuns e soluções\n\n---\n\n## Contribuição e suporte\n\n- Issues: https://github.com/anpdgovbr/docker-infra-pg/issues\n- Discussions: https://github.com/anpdgovbr/docker-infra-pg/discussions\n- Documentação completa em `docs/`\n\n---\n\nVersão atual: v0.2.0 — documentação consolidada para uso local e CI.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanpdgovbr%2Fdocker-infra-pg","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanpdgovbr%2Fdocker-infra-pg","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanpdgovbr%2Fdocker-infra-pg/lists"}