Pular para o conteúdo principal
Versão: Em desenvolvimento — v0.2.3

Imagem Docker

O SDK não exige uma imagem base específica. Para um binário Go sem dependências de sistema, use build em dois estágios.

Dockerfile

FROM golang:1.26.2-alpine AS build

WORKDIR /src

COPY go.mod go.sum ./
RUN go mod download

COPY . .
RUN go test ./...
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -o /out/app .

FROM gcr.io/distroless/static-debian12:nonroot

WORKDIR /app
COPY --from=build /out/app /app/app

USER nonroot:nonroot
ENTRYPOINT ["/app/app"]

Se o ponto de entrada estiver em cmd/api, substitua o final do comando de build por ./cmd/api.

.dockerignore

.git
.env
*.log
build/
coverage/

Não inclua credenciais ou o .env local no contexto da imagem.

Construir

docker build -t hello-colibri:v0.2.2 .

Executar

docker run --rm \
-e ENVIRONMENT=production \
-e APP_NAME=hello-colibri \
-e APP_TYPE=service \
-e CLOUD=none \
-e PORT=8080 \
-p 8080:8080 \
hello-colibri:v0.2.2

Teste o health check:

curl --fail http://localhost:8080/health

Produção

  • Injete segredos pela plataforma, não por argumentos de build.
  • Configure limites e probes usando /health.
  • Envie SIGTERM e permita até WAIT_GROUP_TIMEOUT_SECONDS para encerramento.
  • Mantenha a imagem do Go alinhada à versão exigida pelo SDK.
  • Execute a imagem como usuário sem privilégios.