PostgreSQL + Docker Compose: criando rapidamente ambientes e populando bases para testes

Renato Groffe
3 min readSep 12, 2022

Em um post anterior neste blog demonstrei como podemos utilizar SQL Server e o Docker Compose na criação de containers para ambientes para testes, incluindo a capacidade de executar scripts de inicialização criando e populando bases de dados durante este processo:

SQL Server + Docker Compose: criando rapidamente ambientes e populando bases para testes

Com o PostgreSQL também temos esta possibilidade, sendo que os ajustes de configuração necessários são até mais simples… E é justamente o que pretendo demonstrar neste novo artigo!

E por falar em containers, aproveito este espaço para um convite…

Segunda 19/09 às 21:00 horário de Brasília — teremos mais um evento online e gratuito no canal Canal .NET.

Acompanhe esta live e fique por dentro de diversas dicas e truques extremamente úteis no dia a dia da orquestração de containers com Kubernetes, ferramentas auxiliares, além da integração com serviços em nuvem — incluindo o suporte ao AKS — Azure Kubernetes Service!

Faça sua inscrição em:

https://bit.ly/live-kubernetes-dicas-truques-pt4

Partindo de scripts pré-existentes para a criação de uma base com dados geográficos (regiões e estados), como os arquivos 01-basegeografica.sql:

E 02-basegeografica.sql:

Na próxima imagem notamos que esses 2 scripts (arquivos .sql) estão no mesmo diretório do arquivo do Docker Compose, com as definições do ambiente de testes a ser gerado tomando por base a imagem oficial postgres:

Analisando o contéudo do arquivo docker-compose.yml é possível observar:

  • O uso da imagem postgres, com a variável de ambiente que define o password para o usuário postgres (POSTGRES_PASSWORD) em environment e o mapeamento da porta 5432 em ports;
  • A execução propriamente dita dos scripts SQL acontecerá a partir das configurações indicadas em volumes. Arquivos .sql podem ser copiados para o diretório /docker-entrypoint-initdb.d do container baseado na imagem do PostgreSQL, com a execução dos mesmos acontecendo automaticamente com a ativação do serviço do PostgreSQL durante a criação do container em questão e levando em conta os nomes de tais scripts em ordem alfabética.

A instrução a seguir procederá com a criação do container especificado no arquivo docker-compose.yml:

docker-compose up -d

Já com o comando:

docker-compose ps

Deverá aparecer como status o valor Up, confirmando que a instância em container do PostgreSQL foi criada e se encontra operante:

Buscando conferir se tudo aconteceu dentro do esperado acessei a instância do PostgreSQL e o banco basegeografica via Azure Data Studio (uma ferramenta multiplataforma gratuita compatível com SQL Server e PostgreSQL). Na próxima imagem constatamos que as 2 tabelas previstas (Regioes e Estados) foram criadas e populadas corretamente:

Os scripts que utilizei neste artigo foram disponibilizados no seguinte repositório do GitHub:

https://github.com/renatogroffe/DockerCompose-PostgreSQL-DBInitialization_DadosGeograficos

Caso achem útil a solução, peço por favor um ⭐️ no repositório apoiando. Fica também o convite para que vocês me sigam lá no GitHub!

--

--

Renato Groffe

Microsoft Most Valuable Professional (MVP), Multi-Plataform Technical Audience Contributor (MTAC), Software Engineer, Technical Writer and Speaker