Article image

LP

Leopoldo Prates28/06/2021 16:17
Compartilhe

Como criei o meu ambiente de aprendizado com PostgreSQL e pgAdmin 4 rodando em contêineres Docker

  • #Docker
  • #PostgreSQL

No Bootcamp Santander Fullstack Developer existe um módulo chamado Conceitos e melhores práticas com bancos de dados PostgreSQL. Para executar as atividades práticas desse módulo, é preciso usar o PostgreSQL e o pgAdmin. Uma forma de ter essas ferramentas é instalar as mesmas no sistema operacional do seu computador, porém há outras formas como usar máquinas virtuais ou contêineres. Ao usar máquinas virtuais ou contêineres, você pode instalar diferentes versões desses softwares para testar, ou para contornar algum problema de instalação que possa ocorrer. Fazer esses testes no sistema operacional instalado no seu computador pode deixar registros corrompidos ou até mesmo pacotes que não sejam corretamente removidos, o que poderia causar lentidão. Portanto a vantagem de usar máquinas virtuais ou contêineres, é não afetar o desempenho do sistema operacional do seu computador.

Essa vontade, ou melhor, a necessidade de instalar essas ferramentas em contêineres ocorreu porque encontrei vários problemas ao tentar instalar o PostgreSQL no Ubuntu 20.04. Decidi então criar um contêiner com o PostgreSQL e outro com o PGAdmin4.

O que é necessário para criar os contêineres:
  • Ter o Docker e o Docker Compose instalados no sistema onde se quer criar os contêineres;
  • Navegador de internet e conexão com a internet para permitir o download das imagens Docker;
  • Um editor de texto;
  • Uma ferramenta de linha de comando (Command Line Interface - CLI);

A forma mais prática que encontrei para criar os contêineres e permitir que o processo fosse reproduzido, foi usar um arquivo .yml contendo os parâmetros e configurações necessários para a criação dos contêineres.

Quando se compartilha informações no GitHub é importante evitar que senhas e outros dados sigilosos sejam disponibilizados na internet. Por essa razão, os parâmetros sigilosos foram substituidos, no arquivo .yml, por variáveis de ambiente, e essas variáveis de ambiente ficam armazenadas em um arquivo .env que não é disponibilizado.

Foi usado o arquivo .gitignore para evitar que o arquivo .env fosse adicionado à staging area do Git (git add .), e posteriormente enviado para o GitHub quando executasse o comando push.

Já que o arquivo .env não pode ser compartilhado, foi criado o arquivo env_example para mostrar como são armazenados os dados sensíveis dentro do arquivo .env.

Se você quiser usar o repositório do GitHub para criar os seus próprios contêineres, você só precisará clonar o repositório, customizar os parâmetros conforme a sua necessidade e depois executar o comando abaixo, usando uma interface de linha de comando (CLI), dentro da pasta que contém os arquivos .yml e .env:

docker-compose up -d

A resposta para esse comando tem o formato abaixo:

Creating network "pg_on_docker_postgres-pgadmin-network" with driver "bridge"
Recreating pg_on_docker_postgres_1 ... done
Creating pg_on_docker_pgadmin4_1 ... done

Após obter uma resposta como essa, use o navegador de internet para acessar a interface do PGAdmin4: localhost:5050

A porta 5050 usada no navegador para acessar o pgAdmin4 deve concordar com a porta usada no arquivo .yml, no trecho correspondente ao pgAdmin4:

 pgadmin4:
 image: "dpage/pgadmin4:latest"
 # pgadmin4 Docker image
 ports:
- "5050:80"

Ao entrar com o endereço localhost:5050 no navegador de internet, a interface do pgAdmin4 será exibida:

image

Nesse ponto o ambiente de aprendizado está pronto para executar as atividades práticas das aulas!

Repositório no GitHub: https://github.com/PratesL/postgresql_and_pgadmin_on_docker

Compartilhe
Comentários (3)
Adrian Peral
Adrian Peral - 19/07/2021 04:12

Muito obrigado Leopoldo!!

eu achei esta guia "https://tecadmin.net/how-to-install-postgresql-and-pgadmin-in-fedora/" para instalar PSQL e pgAdmin especificamente na distro Fedora. Fiz a instalação em uma maquina virtual no computador do trabalho, mas ainda não fiz no meu computador pessoal pois teve algumas complicações que eu nao consegui resolver ainda.. existe alguma diferença/restrições entre utilizar containers ou instalação local?

DR

Daniel Rocha - 28/06/2021 16:51

Fiz o mesmo, eu tinha que instalar o postgres pra estudar o curso da DIO e o MySQL por causa da faculdade(mas acabei usado o MariaDB).


È so instalar com a imagem do Postgres com:

docker pull postgres:alpine

Depois eu só mapei a porta padrão do postgres 5432 para fora do container e selecionei uma pasta para armazenar os dados do banco de dados


docker run -d \
     --name postgres-container \
     -e POSTGRES_PASSWORD=<senha-para-acessar> \
     -v <caminho-da-pasta>:/var/lib/postgresql/data \
     -p 5432:5432 \
      postgres:alpine


Ai toda vez q quero usar o Postgres é só inciar o container.

docker start postgres-container

Para parar o container

docker stop postgres-container


Como uso Fedora, acabei instalando a extensão do Gnome Shell: Easy Docker Containers pra não ter que digitar comando para inciar os containers

Leonardo Demetrio
Leonardo Demetrio - 28/06/2021 16:46

Monstro, ai você utiliza sem ter que instalar o PostgreSql na sua máquina!