“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 »

𝗗𝗲𝘀𝗶𝗴𝗻𝗲𝗱 𝗮 𝗣𝗿𝗼𝗱𝘂𝗰𝘁𝗶𝗼𝗻‑𝗥𝗲𝗮𝗱𝘆 𝗠𝘂𝗹𝘁𝗶‑𝗥𝗲𝗴𝗶𝗼𝗻 𝗔𝗪𝗦 𝗔𝗿𝗰𝗵𝗶𝘁𝗲𝗰𝘁𝘂𝗿𝗲 𝗘𝗞𝗦 | 𝗖𝗜/𝗖𝗗 | 𝗖𝗮𝗻𝗮𝗿𝘆 𝗗𝗲𝗽𝗹𝗼𝘆𝗺𝗲𝗻𝘁𝘀 | 𝗗𝗥 𝗙𝗮𝗶𝗹𝗼𝘃𝗲𝗿

!Architecture Diagramhttps://dev-to-uploads.s3.amazonaws.com/uploads/articles/p20jqk5gukphtqbsnftb.gif I designed a production‑grade multi‑region AWS architectu...