PostgreSQL + pgAdmin 4 + Docker Compose: montando rapidamente um ambiente para uso

Renato Groffe
4 min readJan 6, 2019

--

Em um artigo recente abordei a criação de containers Docker para a execução do pgAdmin 4 e de uma instância do PostgreSQL:

PostgreSQL + Docker: executando uma instância e o pgAdmin 4 a partir de containers

A solução em questão permite, sem sombra de dúvidas, a rápida montagem de um ambiente que dependa das tecnologias de bancos de dados mencionadas (PostgreSQL e pgAdmin 4). Contudo, 3 comandos foram executados neste procedimento a fim de criar as estruturas necessárias: 2 containers, além de uma network que possibilitasse a comunicação entre tais elementos.

E como tornar tudo isto mais fácil ainda, se possível através de um único comando e gerando até mesmo um script reutilizável?

O Docker Compose é a resposta para simplificar esse processo. Sua utilização dependerá primeiramente da criação de um arquivo chamado docker-compose.yml, o qual conterá as configurações para a geração de containers e networks.

Importante destacar que o Docker Compose é um serviço do próprio Docker voltado à criação e execução conjunta dos múltiplos containers de uma solução. Tal capacidade contribui para facilitar o deployment de um projeto em diferentes ambientes.

Na listagem a seguir está o conteúdo do arquivo docker-compose.yml que permitirá a criação do ambiente citado (PostgreSQL + pgAdmin 4). Os testes descritos neste artigo acontecerão no Ubuntu Desktop 18.04:

  • O serviço teste-postgres-compose se refere à instância do PostgreSQL a ser criada para acesso na porta 15432;
  • Já o serviço teste-pgadmin-compose corresponde ao container que permitirá a execução do pgAdmin 4 (imagem dpage/pgadmin4) na porta 16543;
  • Nas seções environment de teste-pgadmin-compose e teste-postgres-compose foram definidas configurações (variáveis de ambientes) necessárias para a geração dos 2 containers;
  • As imagens referenciadas serão baixadas caso ainda não existam no ambiente a partir do qual o Docker Compose foi executado;
  • Foi especificado ainda um volume para teste-postgres-compose, indicando assim o diretório no Ubuntu Desktop em que serão gravados os arquivos de dados (/home/renatogroffe/Desenvolvimento/Docker-Compose/PostgreSQL);
  • Por meio da network postgres-compose-network acontecerá a comunicação entre os containers teste-pgadmin-compose e teste-postgres-compose.

O comando docker-compose up -d procederá com a criação da network e dos containers esperados, efetuando inclusive o download das imagens se as mesmas ainda não existirem na máquina considerada (não foi o caso deste exemplo):

Com a instrução docker network ls podemos confirmar que a rede postgres-compose-network foi criada com sucesso (como ambientepostgresql_postgres-compose-network, resultado da concatenação com o nome do diretório em que se encontra o arquivo docker-compose.yml):

Já o comando docker-compose ps indicará que os containers do PostgreSQL (porta 15432) e do pgAdmin 4 (porta 16543) foram gerados corretamente e se encontram em execução:

Na próxima imagem estão os arquivos e diretórios criados para o volume definido no arquivo docker-compose.yml:

Testando o ambiente

Um teste de acesso via browser ao pgAdmin 4 (http://localhost:16543) exibirá a tela inicial desta solução:

Fornecendo as credenciais de acesso que estavam no arquivo docker-compose.yml aparecerá então o painel de gerenciamento do pgAdmin 4:

Ao criar a conexão para acesso à instância do PostgreSQL levar em conta as seguintes considerações:

  • Em Host name/address informar o nome do container que corresponde à instância do PostgreSQL (teste-postgres-compose);
  • Em Port definir o valor 5432 (porta default de acesso ao container e disponível a partir da rede postgres-compose-network; não informar a porta em que o PostgreSQL foi mapeado no host);
  • No atributo Username será informado o usuário default do PostgreSQL (postgres), bem como a senha correspondente em Password (Postgres2019!).

Na próxima imagem é possível observar que a conexão ao PostgreSQL via pgAdmin 4 ocorreu com sucesso:

E aproveito este espaço para deixar aqui ainda um convite.

Dia 08/01/2019 (terça-feira) às 21h30 — horário de Brasília — teremos o primeiro hangout do ano de 2019 no Canal .NET. Desta vez receberemos o MVP Luiz Carlos Faria, que fará uma apresentação justamente sobre o uso do Portainer como solução de administração e troubleshooting de containers Docker.

Para efetuar a sua inscrição acesse a página do evento no Meetup. A transmissão acontecerá via YouTube, em um link a ser divulgado em breve.

--

--

Renato Groffe
Renato Groffe

Written by Renato Groffe

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

Responses (12)