2.3 KiB
2.3 KiB
Etapa 09 — Docker Compose e deploy
Objetivo
Consolidar os três serviços (postgres, backend, frontend) em um único docker-compose.yml capaz de subir o ambiente completo com um comando.
Tarefas
- Criar
Dockerfiledo backend (multi-stage build: build com Maven, runtime com JRE 21 slim), incluindo a instalação das dependências do Playwright (Chromium) na imagem final - Criar
Dockerfiledo frontend (multi-stage: build com Node, servir estático via Nginx) - Consolidar o
docker-compose.ymlfinal:
services:
postgres:
image: postgres:16
environment:
POSTGRES_DB: leadscraper
POSTGRES_USER: ${DB_USER}
POSTGRES_PASSWORD: ${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${DB_USER}"]
interval: 5s
timeout: 5s
retries: 5
backend:
build: ./backend
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/leadscraper
SPRING_DATASOURCE_USERNAME: ${DB_USER}
SPRING_DATASOURCE_PASSWORD: ${DB_PASSWORD}
JWT_SECRET: ${JWT_SECRET}
depends_on:
postgres:
condition: service_healthy
ports:
- "8082:8082"
frontend:
build: ./frontend
environment:
VITE_API_URL: ${API_URL}
depends_on:
- backend
ports:
- "8081:80"
volumes:
postgres_data:
- Criar
.env.examplena raiz com todas as variáveis referenciadas (DB_USER,DB_PASSWORD,JWT_SECRET,API_URL) - Validar que
docker compose up --buildsobe os três serviços do zero, aplica as migrations automaticamente (Flyway roda no startup do backend) e o frontend consegue falar com o backend - Documentar no
LEIA-ME.mdo comando de subida completa e como configurar o.envpara produção (trocar senhas padrão, ajustarVITE_API_URLpara o domínio real)
Critérios de aceite
docker compose up --buildsobe o ambiente completo em uma máquina limpa- Migrations aplicam automaticamente sem passo manual
- Frontend acessível na porta configurada e conseguindo autenticar/consultar dados via backend
- Variáveis sensíveis (senha do banco, JWT secret) vêm de
.env, nunca hardcoded nos Dockerfiles ou no compose LEIA-ME.mdatualizado com instruções de subida