151 lines
3.7 KiB
Markdown
151 lines
3.7 KiB
Markdown
# 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.
|