Praticamente todas as aplicações modernas utilizam algum tipo de banco de dados. Quando trabalho com meus alunos iniciantes, costumo começar pelo armazenamento de informações em arquivos .csv ou .txt, especialmente nos primeiros contatos com linguagens de programação. Essa abordagem simples ajuda a fixar os conceitos iniciais, e costumo aplicá-la bastante em exemplos com PowerShell ou TypeScript.
Com o tempo, no entanto, é fundamental avançar para conceitos mais robustos, como bancos de dados relacionais, virtualização, conteinerização e outras tecnologias que fazem parte do dia a dia do mercado.
Neste post, vamos exercitar exatamente essa evolução: criaremos um contêiner Docker e configuraremos nele um banco de dados PostgreSQL.
Vale destacar que essa prática é voltada para fins de estudo e laboratório. Em ambientes de produção, bancos de dados exigem configurações mais refinadas, com foco em desempenho, segurança e alta disponibilidade. Sempre mantenha seu banco de dados de produção em um formado de alta disponibilidade e de preferência sob demanda e serviço gerenciado (AWS, Azure ou GCP).
Para tudo correr como o esperado, você precisa instalar o docker desktop em seu equipamento. Acesse o site oficial do Docker Desktop e realize o download e instalação.
Como subir um contêiner com Postgre usando Docker no Windows 11:
Primeiro passo é abrir o terminal. Use o comando docker --version para identificar a versão do docker instalado em seu Windows 11. Em meu exemplo estou com o Docker versão 28.3.2. Agora você deve utilizar o script abaixo para essa instalação, tomando o cuidado para usar a sintaxe correta para fazer a quebra de linha. Você também pode usar o Powershell_ISE para facilitar a construção do Script.
docker --version
hostname
docker run -d `
--name meu-postgres `
-e POSTGRES_USER=aluno `
-e POSTGRES_PASSWORD=102030 `
-e POSTGRES_DB=db_profedu `
-p 5432:5432 `
postgres:latest
Depois de aplicar os comandos, abra o Docker Deskop. Você verá que o contêiner já está disponível.
O pgAdmin 4 é a ferramenta oficial de administração e gerenciamento do PostgreSQL, desenvolvida pela própria equipe do PostgreSQL.
É um aplicativo web-based (roda no navegador), mas também pode ser instalado como aplicativo desktop.
Ele é, basicamente, para o PostgreSQL o que o SQL Server Management Studio (SSMS) é para o SQL Server ou o MySQL Workbench é para o MySQL.
Onde roda:
-
Desktop: você instala no Windows, Linux ou macOS e usa como app normal.
-
Web: roda como aplicação web no navegador. Pode ser instalado no servidor ou rodar em container Docker.
No Docker, é muito comum rodar PostgreSQL + pgAdmin4 juntos com docker-compose
, assim você tem o banco e o gerenciador acessível via navegador (http://localhost:5050
).
Importante:
Rodar um banco de dados como o PostgreSQL dentro de um container Docker traz várias vantagens além de laboratórios de estudo. Vou te listar cenários reais de uso para você entender quando isso é útil:
1. Ambientes de desenvolvimento
Cada desenvolvedor pode subir um container com PostgreSQL configurado exatamente igual ao ambiente da equipe.
Evita o famoso “na minha máquina funciona”.
Você pode rodar versões diferentes do PostgreSQL sem conflito com instalações locais.
2. Testes automatizados / CI/CD
Em pipelines de integração contínua (GitHub Actions, GitLab CI, Azure DevOps), é comum rodar bancos em containers temporários.
O pipeline sobe um PostgreSQL, roda os testes da aplicação e depois remove o container.
Isso garante que os testes sempre tenham um banco “limpo”.
3. Prototipagem e provas de conceito
Precisa testar rapidamente um sistema, microserviço ou API que depende de banco de dados?
Você sobe o container em segundos sem precisar instalar/configurar manualmente o PostgreSQL.
Facilita criar demos e PoCs para clientes ou alunos.
4. Ambientes de homologação
Antes de subir em produção, você pode rodar o PostgreSQL em container no ambiente de homolog/teste.
Permite testar cargas, performance e integrações.
5. Isolamento de aplicações
Imagine que você tem dois sistemas diferentes que usam PostgreSQL mas versões diferentes (ex.: um no 12 e outro no 15).
No servidor físico/VM seria difícil manter isso.
Com containers, você roda os dois lado a lado, sem conflito de pacotes/bibliotecas.
6. Portabilidade
Você define a configuração no docker-compose.yml e garante que o banco suba igual em qualquer máquina ou servidor.
Se mudar de notebook, ou migrar para cloud, basta rodar o mesmo comando/docker-compose.
7. Educação e workshops
Ideal para treinamentos (como os que você ministra ).
Você fornece um docker-compose.yml para os alunos, e todos conseguem subir o mesmo ambiente em segundos, sem depender de instalações complexas.
A base do SQL
⚠️ Mas atenção!
Em produção real, em quase todas as vezes o PostgreSQL não é rodado em containers simples, e sim em serviços gerenciados (como Azure Database for PostgreSQL, AWS RDS, GCP Cloud SQL) ou em clusters Kubernetes com volumes persistentes, pois bancos de dados precisam de:
- Persistência de dados (não perder dados ao remover container).
- Alta disponibilidade (replicação, failover)
- Escalabilidade.