DEV Community

Cover image for “Adeus ‘funciona na minha máquina’: Spring Boot com PostgreSQL usando Docker”
Franciele B. de Oliveira
Franciele B. de Oliveira

Posted on

“Adeus ‘funciona na minha máquina’: Spring Boot com PostgreSQL usando Docker”

Introdução

Quando comecei a estudar containerização de aplicações Java, uma coisa ficou muito clara:

o maior ganho não é apenas empacotar aplicações, mas transformar o ambiente inteiro em código.

Neste artigo, vou mostrar como dois arquivos são suficientes para subir uma aplicação Spring Boot + PostgreSQL, sem precisar instalar Java, banco de dados ou servidor de aplicação localmente.

Tudo o que você precisa é Docker ou Podman.

O problema clássico no desenvolvimento backend

Quem trabalha com backend já enfrentou pelo menos um desses cenários:

  • “Funciona na minha máquina”
  • Versões diferentes de Java entre ambientes
  • Banco configurado manualmente
  • Setup longo para novos membros do time

A containerização resolve exatamente isso:

o ambiente passa a ser reproduzível e versionável.


Exemplo prático: Spring Boot + PostgreSQL

Dockerfile da aplicação Spring Boot

O Dockerfile define como a aplicação Java será executada:

FROM eclipse-temurin:17-jdk
WORKDIR /app
COPY target/app.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]
Enter fullscreen mode Exit fullscreen mode

O código está dizendo:

  • Qual versão do Java usar
  • Onde a aplicação ficará dentro do container
  • Como ela será iniciada

docker-compose.yml

Agora descrevemos toda a infraestrutura local:

version: "3.8"

services:
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: appdb
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
    ports:
      - "5432:5432"

  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      SPRING_DATASOURCE_URL: jdbc:postgresql://db:5432/appdb
      SPRING_DATASOURCE_USERNAME: user
      SPRING_DATASOURCE_PASSWORD: pass
    depends_on:
      - db
Enter fullscreen mode Exit fullscreen mode

Nesse arquivo yml definimos:

  • Um container para o PostgreSQL
  • Um container para a aplicação Spring Boot
  • Variáveis de ambiente
  • Comunicação entre os serviços

Subindo tudo com um único comando:

docker compose up
Enter fullscreen mode Exit fullscreen mode

E pronto:
✅ Spring Boot rodando
✅ PostgreSQL configurado
✅ Rede criada automaticamente
✅ Ambiente igual em qualquer máquina


Por que isso é tão poderoso?

Porque muda completamente a forma de desenvolver software:

  • Ambiente deixa de ser um problema
  • Onboarding de novos desenvolvedores fica simples
  • Pipelines de CI/CD ficam previsíveis
  • Infraestrutura vira código versionável

Containerização não é só sobre Docker.
É sobre confiabilidade, portabilidade e padronização.

Conclusão

Quando você percebe que um projeto inteiro pode ser descrito em arquivos, o desenvolvimento muda de nível.

Esse modelo é a base para:

  • Microsserviços
  • Kubernetes
  • Arquiteturas modernas em cloud
  • Entrega contínua

E tudo começa com um Dockerfile e um docker-compose.

Top comments (0)