Backup sem estresse: Como criar o dump do seu BD PostgreSQL no Docker de forma simples
Tags: docker, postgres, devops, database
Published: 2023-11-27 15:30:00

## Introdução

Nesta postagem, exploraremos um guia prático para a criação de dumps de banco de dados PostgreSQL em contêineres Docker. Abordaremos o acesso ao container, a utilização do `pg_dump` e a exportação dos dados para fora do contêiner.

## Acessar container Docker
![Entrando em um container](https://media.giphy.com/media/oaZMOH66c2Ep8eeMhd/giphy.gif)

Para iniciar, é crucial acessar o contêiner que hospeda o banco de dados PostgreSQL. Você pode usar o comando `docker exec` para entrar no ambiente do contêiner. Este comando executa um novo comando em um contêiner em execução. 

```shell
docker exec -it ID_CONTAINER /bin/bash
```
O `-it` permite que você interaja com o terminal dentro do contêiner. O `ID_CONTAINER` é o identificador do container que possui o banco de dados. O `/bin/bash` permite que um shell Bash seja iniciado dentro do contêiner, o que proporciona uma interface de interação com o ambiente do contêiner.

## Gerar Dump utilizando pg_dump
![pátio de containers](https://media.giphy.com/media/6AFldi5xJQYIo/giphy.gif)

Com o acesso ao contêiner estabelecido, é hora de gerar o dump do banco de dados. Utilizaremos a ferramenta `pg_dump`, que é padrão no PostgreSQL e oferece opções para personalizar o processo de backup. Para gerar o arquivo com o backup, execute o comando abaixo:

```shell
pg_dump -U username -d dbname -f NOME_DO_ARQUIVO_DUMP.sql
```

Onde,
- `-U username`: Nome de usuário para conectar-se ao banco.
- `-d dbname`: Especifica o nome do banco de dados ao qual deseja conectar-se.
- `-f file`: Nome do arquivo que receberá o script com o dump.

Será solicitado a você a senha do banco de dados. Ao inserir a senha, o arquivo com o dump será exportado para o container. Mas, como eu tenho acesso a esse arquivo, que se encontra dentro do meu container?

## Exportar arquivo para fora do container
![containers](https://media.giphy.com/media/3orieXnl3Ai4w2j3yM/giphy.gif)

Após a conclusão do dump, sairemos do contêiner. Para isso, basta executar o comando `exit`.

Em seguida, utilizaremos o comando `cp` para exportar o arquivo de dump do contêiner para o sistema de arquivos local. Para isso, basta executar o comando abaixo:

```shell
docker cp idcontainer:/caminho/no/container/NOME_DO_ARQUIVO_DUMP.sql /caminho/no/host/local/
```
Para facilitar o nosso entendimento, vou dar um exemplo. Digamos que você tem um container com id `6abfa0ee2d87`, contendo o arquivo de dump `meu_dump_2023.sql`, e você deseja exportar para o seu diretório local. Você deveria executar o seguinte comando:

```shell
docker cp 6abfa0ee2d87:meu_dump_2023.sql .
```

## Conclusão
Com estes passos simples, você pode criar dumps de banco de dados PostgreSQL em ambientes Docker de maneira simples. Este processo é fundamental para a segurança e a continuidade dos dados, proporcionando uma abordagem prática e segura para backups em contêineres.

## Referências
- [Docker cp - Documentação oficial do Docker](https://docs.docker.com/engine/reference/commandline/cp/)
- [Docker exec - Documentação oficial do Docker](https://docs.docker.com/engine/reference/commandline/exec/)
- [Pg Dump - Documentação oficial do PostgreSQL](https://www.postgresql.org/docs/current/app-pgdump.html)