Pular para o conteúdo principal

Docker com Go

Docker

  • Go é altamente compatível com Docker, gerando binários pequenos e imagens leves.
  • Usa multi-stage builds para reduzir o tamanho da imagem.

Exemplo

# Etapa de build
FROM golang:1.21 AS builder

WORKDIR /app

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

COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -o app ./cmd/api

# Etapa final
FROM alpine:latest

WORKDIR /root/

COPY --from=builder /app/app .

EXPOSE 8080
CMD ["./app"]

Para download do código-fonte, clique aqui!

Construir e executar

docker build -t meu-app .
docker run -p 8080:8080 meu-app

Comparação com Java

Java

  • Imagens Spring Boot são maiores devido à JVM.

Go

  • Imagens são menores (ex: ~10MB com Alpine), ideais para microsserviços
Caso de uso

Containerizar APIs para deploy em Kubernetes ou plataformas como AWS ECS.