Ferramentas

PostgreSQL com Docker

Usando banco de dados com Docker

Nestas anotações, vou criar um arquivo docker-compose.yml ou um arquivo YAML específico para configurar e executar um PostgreSQL.

⚠️ Neste exemplo, estou alterando a porta padrão para evitar conflitos caso outra instância do mesmo banco de dados ou contêiner já esteja em execução na porta padrão.

Ao especificar portas diferentes, garantimos que nossos contêineres Docker possam coexistir pacificamente sem encontrar conflitos de porta. Essa prática é especialmente útil em ambientes de desenvolvimento onde vários serviços podem estar em execução simultaneamente.

Configuração do PostgreSQL com Docker

Esta seção inclui as instruções relacionadas à configuração do PostgreSQL usando Docker.

version: '3.8'

services:
  postgres_dockertest:
    container_name: postgres_dockertest
    image: postgres
    ports:
      - 5431:5432   # Alterando a porta padrão 5432 para a porta 5431 
                    # mas pode ser usada a padrão - 5432:5432
    environment:
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=admin
      - POSTGRES_DB=dockertest

Duas maneiras de iniciar este arquivo YAML

  • docker-compose up -d se o arquivo tiver o nome padrão docker-compose.yml
  • docker-compose -f docker-compose-PostgreSQL.yml up -d se o arquivo tiver um nome específico como docker-compose-PostgreSQL.yml
PS C:\GitHub\dockertest> docker-compose -f docker-compose-PostgreSQL.yml up -d
[+] Running 1/2
 - Network dockertest_default     Created   0.9s 
 ✔ Container postgres_dockertest  Started   0.8s 
PS C:\GitHub\dockertest>

PostgreSQL no Docker Desktop

configurando o application.properties do projeto com os mesmos dados do arquivo YAML

server.port=8085

spring.datasource.url=jdbc:postgresql://localhost:5431/dockertest
spring.datasource.username=admin
spring.datasource.password=admin

spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.PostgreSQLDialect
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.format_sql=true

Teste

package br.com.rasiaink.dockertest;

import br.com.rasiaink.dockertest.model.User;
import br.com.rasiaink.dockertest.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.stereotype.Component;

@Component
public class StartApplication implements CommandLineRunner {
    @Autowired
    private UserRepository repository;

    @Override
    public void run(String... args) throws Exception {
        User user = new User();
        user.setName("Tiago");
        user.setUsername("rasia83");
        user.setPassword("123456-don't-do-it");

        repository.save(user);

        for(User u: repository.findAll()){
            System.out.println(u);
        }

    }
}

Resultado

Resultado no DBeaver