Restaurando um arquivo SQL num Postgresql dockerizado

Fotos grátis de Namibia

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/