Construindo ambiente PostgreSQL no Docker: Guia Passo a Passo
Tags: postgres, docker, programming, database
Published: 2024-01-29 21:39:30

Antes de qualquer coisa, vamos para uma breve explicação do que é o Docker.

Docker é uma plataforma de código aberto que facilita a criação, distribuição e execução de aplicativos em containeres. Containeres são ambientes isolados que contêm tudo o que é necessário para executar um aplicativo, incluindo código, bibliotecas, dependências e configurações. Eles são semelhantes a máquinas virtuais, mas são mais leves e eficientes em termos de recursos.

Algumas das principais características e conceitos relacionados ao Docker incluem:

1. **Imagens:** Uma imagem Docker é um pacote que contém todo o necessário para executar um aplicativo, incluindo o código-fonte, bibliotecas, dependências e configurações. As imagens são usadas como modelos para criar containeres.
2. **Containeres:** Um container Docker é uma instância em execução de uma imagem. Eles são isolados uns dos outros e da máquina host, tornando-os consistentes e previsíveis em diferentes ambientes.
3. **Dockerfile:** É um arquivo de configuração que define como construir uma imagem Docker. Ele descreve as etapas para criar a imagem, especificando quais dependências instalar, como configurar o ambiente e muito mais.
4. **Docker Hub:** É um repositório público e privado de imagens Docker mantido pela Docker, Inc. Você pode encontrar imagens prontas para uso e compartilhar suas próprias imagens no Docker Hub.
5. **Orquestração de containeres:** O Docker pode ser usado em orquestração de containeres, o que significa que você pode gerenciar clusters de containeres para dimensionar aplicativos, equilibrar a carga e garantir alta disponibilidade. O Docker Swarm e o Kubernetes são duas das ferramentas populares para essa finalidade.

---


O primeiro passo para criar um ambiente no Docker é instalar o Docker na máquina. Para isso basta acessar o site do[ Docker](https://www.docker.com/products/docker-desktop/)
e escolher o download para o seu sistema operacional.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dhrjum19vphicdujbdkl.png)

Para escolher e encontrar imagens, basta procurar no [ Docker Hub](https://hub.docker.com/search?q=) o que deseja.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xee70q217bzy21yerzfa.png)

**PostgreSQL**


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ex0ajycmx5i0lrxemjm6.png)

Para criar um ambiente PostgreSQL no Docker, você pode seguir os passos abaixo. 

**Passo 1: Baixe a imagem do PostgreSQL**
Você pode baixar a imagem do PostgreSQL a partir do [ Docker Hub](https://hub.docker.com/_/postgres/), dando o comando abaixo.

_docker pull postgres_

_Passo 2: Crie um container PostgreSQL_
Agora que você tem a imagem do PostgreSQL baixada, você pode criar um container com a seguinte linha de comando:

_docker run --name meu-postgres -e POSTGRES_PASSWORD=minha_senha -d -p 5432:5432 postgres_

- meu-postgres é o nome do container (você pode escolher um nome diferente se preferir).

- minha_senha é a senha que você deseja definir para o usuário "postgres" no PostgreSQL.

- A opção -d inicia o container em segundo plano.

- A opção -p 5432:5432 mapeia a porta 5432 do container para a porta 5432 do host, permitindo que você se conecte ao PostgreSQL do host.

Passo 3: Acessando o PostgreSQL

Agora que o container PostgreSQL está em execução, você pode acessá-lo usando o pgadmin, para isso, precisará baixar a imagem do pgAdmin do [ Docker Hub] (https://hub.docker.com/r/dpage/pgadmin4/) utilizando o código:

_docker pull dpage/pgadmin4_

Depois disso é preciso criar um container para a execução do pgadmin. Para isso, basta usar o código:

_docker run --name teste-pgadmin -p 15432:80 -e "PGADMIN_DEFAULT_EMAIL=meu_email@teste.com.br" -e "PGADMIN_DEFAULT_PASSWORD=minha_senha" -d dpage/pgadmin4_

- name é o nome do container que vai ser criado.

- A opção -p 15432:80 mapeia a porta 15432 que acontece a comunicação com o pgAdmin que será mapeada na porta 80.

- A opção PGADMIN_DEFAULT_EMAIL será o login que você usará para acessar o pgAdim.

- A opção PGADMIN_DEFAULT_PASSWORD será a senha que você usará para acessar o pgadmin.

Agora basta acessar o pgAdmin utilizado o https://localhost:15432 e a seguinte tela irá aparecer:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ga33mgtp3m2hbyt54s19.png)

Após logar com o email e senha definidos, o painel principal irá aparecer.


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zu316ndbcpckgyros1ku.png)

Agora só falta criar um Server para poder começar a utilizar o PostgreSQL. Para isso basta seguir o passo a passo:

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9n1pgvgql17yw4vtyp4w.png)

O próximo passo é dar um nome para o servidor.

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rjky3hs8rjb145ikpmly.png)

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/yd5kxjw431svhlyu7bul.png)

- No host name/address colocamos o nome host.docker.internal

- No port, colocamos a porta que definimos para nosso container postgres

- No username, informamos o usuário default

- Password colocamos a senha que definimos, no caso, minha_senha

Ao fazer todo esse passo a passo, você terá uma tela parecida com essa:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m26h3zxa92w00mlz1o97.png)

Você agora tem um ambiente PostgreSQL e pgAdmin em execução no Docker e pode começar a criar bancos de dados e tabelas conforme necessário.

---

Ao seguir o passo a passo deste artigo, você pode criar e configurar rapidamente containeres Docker para o PostgreSQL e o PgAdmin, aproveitando os benefícios da virtualização de containeres para desenvolvimento e testes. Isso não apenas simplifica a administração do banco de dados, mas também facilita a colaboração e a manutenção de ambientes de desenvolvimento consistentes.

É importante mencionar que, ao usar containeres Docker em ambientes de produção, é essencial considerar aspectos de segurança, desempenho e escalabilidade. Afinal, essa abordagem, embora valiosa para o desenvolvimento, requer uma avaliação cuidadosa e adaptação para atender às demandas de produção.