Gerando o seed.sql para inicialização do banco no Docker
Passo a passo para criar e manter atualizado o arquivo seed.sql, usado para inicializar o banco de dados com esquema, usuário e permissões.
Objetivo: gerar um arquivo
seed.sqlque inicializa o banco com esquema, usuário de aplicação e permissões de aplicação. Observação: os itens “usuário” e “permissões” abaixo referem-se às tabelas da aplicação (ex.:user_system,permissions), não a roles do PostgreSQL.
Pré-requisitos
- Docker e Docker Compose instalados.
- Acesso ao banco remoto
postgres.c3sl.ufpr.brcom o usuárioademir. - Arquitetura do projeto contendo a pasta
database/.
0) Backup do seed atual (opcional, recomendado)
Renomeie o seed atual para manter como backup.
mv database/seed.sql database/seed_$(date +%Y%m%d_%H%M%S).sql
1) Exportar apenas o esquema do banco remoto
Na raiz do projeto, execute:
pg_dump -h postgres.c3sl.ufpr.br -U ademir -d ademir --schema-only > database/seed.sql
Quando solicitado, insira a senha do banco.
Dica: para evitar prompt interativo, você pode usar
PGPASSWORD=suasenha pg_dump ....
2) Subir o Postgres local via Docker Compose
docker compose up postgres -d
3) Acessar o banco dentro do container
docker exec -it ademir-db psql -U ademir -d ademir
4) Criar permissões na tabela permissions
INSERT INTO permissions (name, "createdAt", "updatedAt")
SELECT 'admin', NOW(), NOW()
WHERE NOT EXISTS (
SELECT 1 FROM permissions WHERE name = 'admin'
);
INSERT INTO permissions (name, "createdAt", "updatedAt")
SELECT 'common', NOW(), NOW()
WHERE NOT EXISTS (
SELECT 1 FROM permissions WHERE name = 'common'
);
INSERT INTO permissions (name, "createdAt", "updatedAt")
SELECT 'manager', NOW(), NOW()
WHERE NOT EXISTS (
SELECT 1 FROM permissions WHERE name = 'manager'
);
5) Criar usuário inicial admin
INSERT INTO user_system (
name,
email,
password,
is_active,
"isEmailVerified",
register_date,
verification_date,
last_login
) VALUES (
'admin',
'admin@mail.com',
'mudar123*', -- ⚠️ idealmente armazenar com hash
TRUE,
TRUE,
NOW(),
NOW(),
NOW()
);
6) Gerar o novo seed.sql com dados
Ainda na raiz do projeto, execute:
docker exec -it ademir-db pg_dump -U ademir -d ademir > database/seed.sql