Назад к статьям

Docker и Go: лучшие практики контейнеризации

Multi-stage builds, scratch images, health checks — минимальный и безопасный Docker-образ для Go.

Минимальный образ

Go компилируется в статический бинарник — scratch-образ и ничего лишнего.

FROM golang:1.22-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-s -w" -o /app/server ./cmd/server

FROM scratch
COPY --from=builder /app/server /server
COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
EXPOSE 8080
ENTRYPOINT ["/server"]

Результат

Финальный образ: ~10-15MB вместо ~1GB с golang:latest. Быстрее деплой и меньше attack surface.

Похожие статьи

Go · Architecture · API

Проектирование высоконагруженных API на Go

Разбираем архитектурные паттерны и подходы к созданию API, способного обрабатывать миллионы запросов.

Go · Clean Architecture · Best Practices

Чистая архитектура в Go: от теории к практике

Как применить принципы Clean Architecture в Go-проекте и не превратить код в Java-подобный boilerplate.