Atualizando o PostgreSQL no Docker: Guia Prático
Manter o PostgreSQL atualizado é uma prática essencial para qualquer desenvolvedor ou equipe de infraestrutura. Novas versões trazem melhorias de performance, correções de segurança e, principalmente, novos recursos que muitas aplicações modernas passam a exigir como requisito mínimo.
Recentemente, me deparei com essa necessidade: algumas aplicações que eu precisava rodar exigiam uma versão mais recente do PostgreSQL como requisito. Precisei encontrar uma forma simples e segura de fazer essa atualização sem perder meus dados.
Neste artigo, vamos aprender juntos como atualizar o PostgreSQL em containers Docker de forma prática e sem complicações.
Antes de Começar
Para seguir este guia, você vai precisar de:
- Docker instalado
- Acesso ao terminal
- Saber o nome ou ID do container onde o PostgreSQL está rodando
Vamos utilizar o comando pg_dump, uma ferramenta nativa do PostgreSQL que cria uma cópia completa do seu banco de dados em formato SQL. Essa cópia pode ser restaurada em qualquer versão compatível do PostgreSQL.
Dica: Para descobrir o nome ou ID do seu container, use o comando docker ps.
Passo 1: Fazer o Dump do Banco de Dados
Primeiro, vamos criar um backup (dump) do banco de dados. Esse backup será usado para popular o novo container. Não é necessário parar o container para isso, pois o pg_dump consegue fazer a exportação com o banco em execução.
1
docker exec -it <nome-do-container> pg_dump -U <usuario> <nome-do-banco> > db_backup.sql
Exemplo prático:
1
docker exec -it meu_postgres pg_dump -U postgres minha_aplicacao > db_backup.sql
Após executar o comando, você terá um arquivo db_backup.sql no diretório atual com todo o conteúdo do seu banco de dados.
Passo 2: Parar e Remover o Container Atual
Agora vamos parar e remover o container atual para poder criar um novo com a versão atualizada.
1
2
docker stop <nome-do-container>
docker rm <nome-do-container>
Exemplo prático:
1
2
docker stop meu_postgres
docker rm meu_postgres
Passo 3: Criar o Novo Container com a Versão Atualizada
Vamos criar um novo container com a versão atualizada do PostgreSQL. Por exemplo, se você estava rodando a versão 15 e quer atualizar para a versão 17:
1
docker run -d --name <nome-do-container> -e POSTGRES_PASSWORD=<senha> postgres:17
Exemplo prático:
1
docker run -d --name meu_postgres -e POSTGRES_PASSWORD=minha_senha postgres:17
IMPORTANTE: Se você está atualizando de uma versão anterior à 18 para a versão 18 ou superior, o caminho do volume de dados mudou de /var/lib/postgresql/data para /var/lib/postgresql/<versao>/docker. Consulte a documentação oficial para mais detalhes.
Passo 4: Importar o Banco de Dados
Por fim, vamos importar o backup para o novo container, restaurando todos os dados.
1
cat db_backup.sql | docker exec -i <nome-do-container> psql -U <usuario> <nome-do-banco>
Exemplo prático:
1
cat db_backup.sql | docker exec -i meu_postgres psql -U postgres minha_aplicacao
Aguarde a execução completa. Dependendo do tamanho do banco, pode levar alguns minutos.
Conclusão
Com esses quatro passos, você consegue atualizar seu PostgreSQL em containers Docker de forma segura e sem complicações. Resumindo o processo: backup → parar container → criar novo container → restaurar.
Algumas dicas importantes:
- Sempre teste em desenvolvimento primeiro antes de aplicar em produção
- Mantenha seus backups em local seguro, de preferência em mais de um lugar
- Verifique a compatibilidade da nova versão com sua aplicação antes de atualizar
Participe do nosso grupo no WhatsApp.
Bons estudos e mãos à obra!