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

Published: (January 16, 2026 at 07:07 AM EST)
2 min read
Source: Dev.to

Source: Dev.to

Introdução

Quando comecei a estudar containerização de aplicações Java, ficou claro que o maior ganho não é apenas empacotar a aplicação, mas transformar todo o ambiente em código. Neste artigo, mostro 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.

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.

Dockerfile

# Dockerfile
FROM eclipse-temurin:17-jdk
WORKDIR /app
COPY target/app.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]

O Dockerfile define:

  • Qual versão do Java usar (eclipse-temurin:17-jdk);
  • Onde a aplicação ficará dentro do container (/app);
  • Como ela será iniciada (java -jar app.jar).

docker‑compose.yml

# docker-compose.yml
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

Neste arquivo definimos:

  • Um container para o PostgreSQL;
  • Um container para a aplicação Spring Boot;
  • Variáveis de ambiente necessárias para a conexão;
  • Comunicação entre os serviços (app depende de db).

Para subir tudo com um único comando:

docker compose up

Benefícios

  • O ambiente deixa de ser um problema de configuração.
  • Onboarding de novos desenvolvedores torna‑se simples.
  • Pipelines de CI/CD ficam previsíveis.
  • Infraestrutura vira código versionável.

Containerização não é só sobre Docker; trata‑se de confiabilidade, portabilidade e padronização. Quando um projeto inteiro pode ser descrito em arquivos, o desenvolvimento muda de nível. Esse modelo serve de base para:

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

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

Back to Blog

Related posts

Read more »

What I Did This Week

Release of SlideNote Yesterday I released SlideNote, a Chrome browser side‑panel note‑taking extension. The idea came to me on Wednesday morning after growing...

Linus Torvalds is 'Vibe Coding'.

Well, the debate is officially over. Linus Torvalds, the creator of Linux and Git—arguably the most critical engineer of the modern internet—just dropped this b...