Docker e Compose
A imagem multiestágio, o compose com banco — e as cinco decisões que cada artefato carrega.
dataforge devops docker escreve três arquivos: Dockerfile, .dockerignore e docker-compose.yml. Eles saem do que o projeto usa — o gerador lê os adopt e o forge.toml —, e cada linha tem um motivo que um artefato copiado da internet não tem.
bash
dataforge devops docker # os tres arquivos
dataforge devops docker --seco # mostra, sem escrever
dataforge devops docker build # docker build com a tag do projeto
dataforge devops doctor # o que falta para subirO que a imagem carrega, e por quê#
| No artefato | Sem ele |
|---|---|
USER forge | um escape de contêiner vira root no host |
| o manifesto copiado antes do código | um commit numa linha reinstala tudo — de 8 s para 2 min |
.env no .dockerignore | o segredo fica na camada, e docker history o mostra |
HEALTHCHECK com prazo | o orquestrador manda tráfego para um contêiner que ainda está subindo |
depends_on: service_healthy no compose | a aplicação falha na primeira consulta, de forma intermitente |
O banco no compose#
Quando o projeto adota Forge, o compose ganha o serviço do banco com sonda de saúde, e a aplicação lê a URL de DATABASE_URL. Forge.esperar espera o banco aceitar conexão antes da primeira consulta — ver O banco em contêiner.
yaml
services:
app:
build: .
environment:
DATABASE_URL: postgres://app:app@banco:5432/app
depends_on:
banco:
condition: service_healthy
banco:
image: postgres:16-alpine
healthcheck:
test: ["CMD-SHELL", "pg_isready -U app"]
interval: 2s
retries: 30
Continue em Kubernetes e Instalação com Docker.