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 -dse o arquivo tiver o nome padrãodocker-compose.ymldocker-compose -f docker-compose-PostgreSQL.yml up -dse o arquivo tiver um nome específico comodocker-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>

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
