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
SIGTERMe permita atéWAIT_GROUP_TIMEOUT_SECONDSpara encerramento. - Mantenha a imagem do Go alinhada à versão exigida pelo SDK.
- Execute a imagem como usuário sem privilégios.