Como criar e conectar a um banco de dados PostgreSQL usando Docker

Cover Image for Como criar e conectar a um banco de dados PostgreSQL usando Docker
Gabriel Borges
Gabriel Borges

Usar Docker para configurar e rodar um banco de dados PostgreSQL pode ser uma maneira prática e eficiente de isolar o ambiente de desenvolvimento e garantir que sua aplicação tenha um banco de dados robusto e escalável. Neste post, vamos aprender como criar um container Docker com o PostgreSQL e como conectar uma aplicação a ele.

Passos para Criar e Conectar ao PostgreSQL Usando Docker

1. Instalando o Docker

Se você ainda não tem o Docker instalado, o primeiro passo é instalar o Docker em sua máquina. O processo de instalação varia de acordo com o sistema operacional:

2. Crie uma pasta para armazenar o arquivo de inicialização do Docker

Crie uma pasta para organizar o arquivo de configuração. No exemplo a seguir, utilizamos a pasta database, mas você pode escolher qualquer nome.

mkdir database
cd database

3. Crie um arquivo de inicialização do Docker

Crie um arquivo chamado docker-compose.yml dentro da pasta database e adicione o seguinte conteúdo:

version: '3.7'

services:
  postgres:
    image: bitnami/postgresql:latest
    ports:
      - '5432:5432'
    environment:
      POSTGRES_USER: seu-login
      POSTGRES_PASSWORD: sua-senha
      POSTGRES_DB: seu-banco-de-dados
    volumes:
      - postgres_data:/bitnami/postgresql
    restart: unless-stopped

volumes:
  postgres_data:

Estamos utilizando a imagem do Bitnami para o PostgreSQL, que é uma imagem bem conhecida e facilita a configuração do banco de dados.

Explicação dos parâmetros

  • POSTGRES_USER: Define o nome do usuário PostgreSQL.

  • POSTGRES_PASSWORD: Define a senha do usuário PostgreSQL.

  • POSTGRES_DB: Nome do banco de dados que será criado.

  • volumes: Cria um volume para persistir os dados do banco, garantindo que não sejam perdidos após o reinício do container.

  • restart: Parâmetro para garantir que o container seja reiniciado caso ocorra um erro ou ao reiniciar a VM.

  • image: Nome da imagem utilizada do DockerHub (Utilizei o postgres da Bitnami pois além de ser fácil de configurar tem uma camada adicional de segurança).

Obs: Mais informações no link: https://hub.docker.com/r/bitnami/postgresql

4. Inicialize o container

Para inicializar o container, abra o terminal na pasta database e execute o comando:

docker compose up -d

Obs: O comando docker compose up -d é usado para iniciar o container em modo detach (em segundo plano).

5. Verifique se o container está funcionando

Para verificar se o container está funcionando, execute o comando:

docker ps

Deve aparecer uma saída similar a esta:

image

Se o container está funcionando, você pode acessar o banco de dados usando um cliente PostgreSQL ou ferramentas como o DBeaver, pgAdmin ou Beekeeper Studio.

6. Conectar a aplicação ao banco de dados

Para conectar a aplicação ao banco de dados, você precisará das informações de conexão do banco de dados. No arquivo docker-compose.yml você pode ver as informações de conexão do banco de dados.

Se a sua conexão for por um ORM ou QUERY BUILDER utilize as variaveis de ambiente. Por exemplo do knex use o seguinte código:

import knex from 'knex';

const knex = knex({
  client: 'pg',
  connection: process.env.DATABASE_URL
});

Crie um arquivo chamado .env na raiz do projeto e adicione as seguintes linhas:

DATABASE_URL=postgres://seu-login:sua-senha@localhost:5432/seu-banco-de-dados

Ou utilize as suas credenciais do banco de dados para acessar o banco de dados no programa de sua preferência.

Conclusão

Parabéns! Seu banco de dados PostgreSQL foi criado e está rodando em um container Docker. Agora você pode começar a usá-lo em sua aplicação, com a vantagem de ter um ambiente isolado e fácil de gerenciar.

Esse post abrange todos os passos necessários para configurar o PostgreSQL em um container Docker em uma máquina virtual, incluindo como conectá-lo a sua aplicação usando variáveis de ambiente e um exemplo de código com o Knex.js.