Restaurando um arquivo SQL num Postgresql dockerizado

Ao desenvolver uma aplicação com um banco Postgresql em um container, talvez, você precise restaurar um arquivo SQL ou um dump de um banco já existente. É algo simples e aqui está uma sugestão de passo a passo:
Crie o container
Primeiro, crie o container com o Postgresql:
docker run -e POSTGRES_PASSWORD=<senha_de_acesso/> postgres
Inspecione o container
docker inspect <container>
Na saída do comando docker inspect
, procure as informações sobre o volume do container. Abaixo segue uma saída de exemplo:
{
"Type": "volume",
"Name": "<nome_do_seu_container>",
"Source": "/var/lib/docker/volumes/<nome_do_seu_container>/_data",
"Destination": "/<algum_diretorio>",
"Driver": "local",
"Mode": "rw",
"RW": true,
"Propagation": ""
},
Copie o arquivo SQL
Usando a propriedade source do json acima, copie o arquivo SQL para o volume do container.
cp banco.sql /var/lib/docker/volumes/<nome_do_seu_container>/_data
Restaure o banco
Para restaurar o banco você precisa acessar o container via shell:
docker exec -it <seu_container> bash
Uma vez no container, você pode usar a ferramenta apropriada para restaurar seu banco dependendo do tipo de restore: psql ou pgrestore, por exemplo.
psql -U <usuario> -W -f <path_para_seu_arquivo/banco.sql> banco_de_dados
Pronto :-) Banco restaurado.
Sobre a localização do arquivo SQL
Se você enfrentar alguma dificuldade em encontrar o arquivo, uma ideia é procurar em:
/var/lib/postgresql/data
Referência:
Encontre mais detalhes em https://simkimsia.com/how-to-restore-database-dumps-for-postgres-in-docker-container/