# Banco de Dados Pralog Este repositório contém a configuração Docker para o banco de dados PostgreSQL do sistema Pralog. ## 📋 Visão Geral - **Banco**: PostgreSQL 16 Alpine - **Container**: `pralog-local-db` - **Rede Docker**: `pralog-net` - **Porta Externa**: `15432` - **Porta Interna**: `5432` ## 🔐 Credenciais ### Ambiente Local (Docker) | Campo | Valor | |-------|-------| | Host | `localhost` | | Porta | `15432` | | Usuário | `itguys` | | Senha | `PralogLocal2026!Secure` | | Database | `global` | **Connection String:** ``` postgresql://itguys:PralogLocal2026!Secure@localhost:15432/global ``` ### Ambiente de Produção (AWS RDS) As credenciais de produção estão documentadas em [`chaves.md`](./chaves.md). ## 🚀 Como Usar ### Pré-requisitos - Docker Desktop instalado e rodando - PowerShell (Windows) ### Iniciando o Container ```powershell docker-compose up -d ``` ### Parando o Container ```powershell docker-compose down ``` ### Verificando Status ```powershell docker ps -f name=pralog-local-db ``` ## 🔄 Restaurando o Backup O arquivo de backup está montado dentro do container em `/tmp/restore.sql`. ### Passo a Passo 1. **Acesse o container**: ```powershell docker exec -it pralog-local-db sh ``` 2. **Execute o restore**: ```bash psql -U itguys -d global -f /tmp/restore.sql ``` 3. **Verifique os dados**: ```bash psql -U itguys -d global -c 'SELECT count(*) FROM "GlobalDriver"' ``` ## 📁 Estrutura do Projeto ``` banco-pralog/ ├── docker-compose.yml # Configuração do container ├── backup_global_*.sql # Backup do banco de dados ├── chaves.md # Credenciais (produção e local) ├── local_credentials.md # Credenciais do ambiente local ├── init-scripts/ │ └── 01-create-role.sql # Script de criação de roles ├── pg_data/ # Volume de dados (gitignore) └── README.md # Este arquivo ``` ## 🐳 Configuração Docker ### docker-compose.yml O arquivo `docker-compose.yml` define: - **Imagem**: `postgres:16-alpine` (leve e compatível com o backup) - **Volumes**: - `./pg_data` → `/var/lib/postgresql/data` (persistência de dados) - `./backup_*.sql` → `/tmp/restore.sql` (arquivo de backup) - `./init-scripts/*.sql` → `/docker-entrypoint-initdb.d/` (scripts de inicialização) - **Rede**: `pralog-net` (bridge isolada) - **Porta**: `15432:5432` ### Persistência de Dados Os dados do PostgreSQL são armazenados em `./pg_data/`. Este diretório: - ✅ Persiste entre restarts do container - ✅ Persiste após `docker-compose down` - ✅ Persiste após redeploy/pull - ❌ **Não** é enviado ao Git (está no `.gitignore`) Para resetar o banco completamente: ```powershell docker-compose down Remove-Item -Recurse -Force .\pg_data\* docker-compose up -d ``` ## 📊 Tabelas Principais | Tabela | Descrição | |--------|-----------| | `GlobalDriver` | Motoristas globais | | `GlobalDriverTenant` | Relação motorista-tenant | | `Tenant` | Tenants/empresas | | `TenantDomain` | Domínios dos tenants | | `global_driver_bank_account` | Contas bancárias dos motoristas | | `global_integration` | Integrações (Planner, IdWall) | | `request_log` | Log de requisições da API | ## 🛠️ Manutenção ### Fazer Backup ```powershell .\backup.ps1 ``` ### Exportar para CSV ```powershell .\export_csv.ps1 ``` ## ⚠️ Notas Importantes 1. **Porta 15432**: Usamos porta não-padrão para evitar conflitos com PostgreSQL local. 2. **Rede isolada**: O container roda em rede `pralog-net` para compatibilidade com Portainer. 3. **Restore manual**: O backup não é restaurado automaticamente ao iniciar o container.