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ãodocker-compose.yml
docker-compose -f docker-compose-PostgreSQL.yml up -d
se 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);
}
}
}