PostgreSQL + Docker Compose: criando rapidamente ambientes e populando bases para testes
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:
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!