Pular para o conteúdo

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 subir

O que a imagem carrega, e por quê#

No artefatoSem ele
USER forgeum escape de contêiner vira root no host
o manifesto copiado antes do códigoum commit numa linha reinstala tudo — de 8 s para 2 min
.env no .dockerignoreo segredo fica na camada, e docker history o mostra
HEALTHCHECK com prazoo orquestrador manda tráfego para um contêiner que ainda está subindo
depends_on: service_healthy no composea 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.