Skip to content

anpdgovbr/docker-infra-pg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🐘 Infraestrutura PostgreSQL ANPD

**I## 📚 Documentação Completa

📋 Pré-requisitos

  • 🐳 Docker e Docker Compose
  • 📦 Node.js (para helpers cross-platform)
  • 🟢 npm ou yarn
  • 🐧 Bash (Windows: Git Bash ou WSL)rutura PostgreSQL padronizada para projetos da ANPD com setup automatizado.**

🌍 NOVO: 100% Cross-Platform!

Agora funciona perfeitamente em Windows, macOS e Linux usando Node.js! 🎉

  • Windows (PowerShell, CMD, Git Bash)
  • macOS (Terminal, iTerm)
  • Linux (bash, zsh, fish)
  • CI/CD (GitHub Actions, GitLab, Jenkins)

🚀 Setup Rápido (Universal)

🤖 Opção 1: Auto-Setup (Mais Fácil)

Um comando que configura tudo automaticamente:

Para projetos CommonJS (padrão):

curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/auto-setup.js | node

Para projetos ES Module ("type": "module"):

# 🚀 Cross-Platform Auto-Detect (Recomendado)
curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/quick-setup.js | node

# Manual por SO:
# Windows (PowerShell/CMD)
curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/auto-setup.js -o temp-setup.cjs && node temp-setup.cjs && del temp-setup.cjs

# macOS/Linux
curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/auto-setup.js -o temp-setup.cjs && node temp-setup.cjs && rm temp-setup.cjs

🎯 O que faz automaticamente: O auto-setup detecta o tipo do projeto e configura arquivos .cjs para compatibilidade.

Isso irá:

  • ✅ Adicionar scripts infra:* ao package.json (sem conflitos)
  • ✅ Configurar .gitignore automaticamente
  • ✅ Criar estrutura de pastas .infra/
  • ✅ Detectar ES modules e configurar extensões corretas
  • ✅ Não modificar scripts existentes
npm run infra:setup  # Configura infraestrutura
npm run dev          # Seu projeto funcionando!

📝 Opção 2: Manual (Para quem quer controle)

{
  "scripts": {
    "infra:setup": "mkdir -p .infra 2>/dev/null || mkdir .infra 2>nul && curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/setup-cross-platform.js > .infra/setup-cross-platform.js && curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/docker-helper.js > .infra/docker-helper.js && curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/db-helper.js > .infra/db-helper.js && node .infra/setup-cross-platform.js",
    "infra:up": "node .infra/docker-helper.js up",
    "infra:db:init": "node .infra/db-helper.js setup"
  }
}

✅ Sem Conflitos: Scripts usam prefixo infra:* - não interferem com scripts existentes do Prisma, Next.js, etc.

npm run infra:setup  # Configura infraestrutura
npm run dev          # Seu projeto funcionando!

Opção 3: Comando Direto (Bash)

curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/setup-infra.sh | bash

Pronto! Seu projeto agora tem uma infraestrutura PostgreSQL isolada e configurada.

� Documentação Completa

Seu projeto deve ter:

  1. package.json com nome do projeto
  2. .env com configuração atual do banco (pode estar vazio):
    POSTGRES_DB=meu_projeto_dev
    DATABASE_URL="postgresql://user:password@localhost:5432/database?schema=public"

🎯 Como Funciona

  1. Script lê seu projeto (package.json + .env)
  2. Detecta dados faltantes (nome, usuário, senha do banco)
  3. Oferece opções inteligentes (auto-gerar, manual, ou parar)
  4. Clona esta infraestrutura para pasta infra-db/
  5. Configura tudo baseado no seu projeto
  6. Sincroniza seu .env com dados finais

💡 Nota: A pasta local sempre será infra-db/ independente do nome do repositório, garantindo que todos os comandos funcionem consistentemente em qualquer projeto.

🧠 Atualização Inteligente (NOVO!)

Para projetos já configurados, use a atualização inteligente que detecta automaticamente:

  • Novos scripts (como infra:fix, infra:debug)
  • Scripts desatualizados (comandos melhorados)
  • Extensões incorretas (.js vs .cjs para ES modules)
  • Arquivos de infraestrutura (scripts na pasta .infra/)
# 🧠 Atualização inteligente completa
curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/smart-update.js | node

# OU apenas scripts (sem atualizar package.json)
npm run infra:update

O que a atualização inteligente faz:

  1. Baixa a versão mais recente do update-scripts.js
  2. Executa a atualização com toda inteligência nova
  3. Adiciona scripts novos ao package.json (como infra:fix)
  4. Atualiza scripts existentes com melhorias
  5. Corrige extensões de arquivo (.js.cjs) automaticamente
  6. Mostra relatório detalhado do que foi feito

Perfeito para resolver: "npm error Missing script: infra:fix"

✅ Resultado

  • ✅ PostgreSQL isolado para seu projeto
  • ✅ Credenciais únicas e seguras (preserva existentes)
  • ✅ Zero configuração manual
  • ✅ Banco pronto para Prisma/migrations
  • ✅ Sincronização automática do .env

🔧 Modos de Execução

🤖 Modo Automático (Recomendado para CI/CD)

# Via curl (detecta pipe automaticamente)
curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/setup-infra.sh | bash

# Local com parâmetros
./setup-infra.sh --force --auto

✏️ Modo Manual (Controle Total)

# Download primeiro
wget https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/setup-infra.sh
chmod +x setup-infra.sh

# Execução interativa
./setup-infra.sh --manual

# Ou com dados específicos
./setup-infra.sh --force --db-name=meudb --db-user=meuuser --db-password=minhasenha

📚 Parâmetros Disponíveis

--force               # Sobrescrever infra-db sem perguntar
--auto                # Gerar dados faltantes automaticamente
--manual              # Pedir dados faltantes via prompt
--db-name=NOME        # Nome do banco
--db-user=USER        # Usuário do banco
--db-password=PASS    # Senha do banco
--help, -h            # Mostrar ajuda

📖 Scripts Recomendados para package.json

Adicione ao seu package.json:

{
  "scripts": {
    "infra:setup": "curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/setup-infra.sh | bash",
    "infra:setup:manual": "wget -q -O setup-infra.sh https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/setup-infra.sh && chmod +x setup-infra.sh && ./setup-infra.sh --manual && rm setup-infra.sh",
    "infra:setup:force": "curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/setup-infra.sh | bash -s -- --force --auto",
    "infra:up": "cd infra-db && docker-compose up -d",
    "infra:down": "cd infra-db && docker-compose down",
    "infra:logs": "cd infra-db && docker-compose logs -f postgres",
    "infra:reset": "cd infra-db && docker-compose down -v && docker-compose up -d",
    "infra:clean": "npm run infra:down && rm -rf infra-db",
    "db:setup": "npm run infra:up && sleep 5 && npm run prisma:migrate && npm run prisma:seed",
    "db:fresh": "npm run infra:reset && sleep 10 && npm run db:setup"
  }
}

🎮 Comandos de Uso Diário

# Setup inicial (primeira vez)
npm run infra:setup

# Setup com controle manual (baixa scripts e executa)
npm run infra:setup:manual

# Setup forçado - regenera tudo (baixa scripts e executa)
npm run infra:setup:force

# 🧠 Atualização Inteligente (NOVO!) - atualiza scripts E package.json
curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/smart-update.js | node

# Atualizar apenas scripts (quando há melhorias no repo)
npm run infra:update

# Debug de configuração (quando há problemas de conexão)
npm run infra:debug

# Corrigir credenciais (quando container tem credenciais diferentes)
npm run infra:fix

# Desenvolvimento diário
npm run db:setup && npm run dev

# Gerenciar infraestrutura
npm run infra:up          # Subir banco
npm run infra:down        # Parar banco
npm run infra:logs        # Ver logs
npm run infra:reset       # Reset completo

# Reset do banco (quando necessário)
npm run db:fresh

# Limpar tudo
npm run infra:clean

🔧 Scripts Avançados (Opcionais)

Para projetos com necessidades específicas:

{
  "scripts": {
    "infra:setup:prod": "wget -q -O setup-infra.sh https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/setup-infra.sh && chmod +x setup-infra.sh && ./setup-infra.sh --force --db-name=meu_projeto_prod --db-user=prod_user --db-password=$PROD_DB_PASSWORD && rm setup-infra.sh",
    "infra:setup:test": "curl -sSL https://raw.githubusercontent.com/anpdgovbr/docker-infra-pg/main/setup-infra.sh | bash -s -- --force --db-name=test_db --auto",
    "infra:backup": "cd infra-db && docker-compose exec postgres pg_dump -U admin postgres > backup.sql",
    "infra:restore": "cd infra-db && docker-compose exec -T postgres psql -U admin postgres < backup.sql"
  }
}

🔒 Segurança

  • Zero senhas hardcoded no código
  • Credenciais sempre únicas por projeto/execução
  • Bancos isolados entre projetos
  • Senhas geradas com criptografia forte

📚 Documentação


Uma infraestrutura. Todos os projetos ANPD. Zero configuração manual. 🎉

About

Ambiente Docker para um PostgreSQL 15 puro e um pgAdmin4

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published