Как собрать приложение в Docker

«Как собрать приложение в Docker» — вопрос из категории DevOps, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для сборки приложения в Docker нужно создать Dockerfile и выполнить команду docker build.

Пример для Go-приложения:

# Используем официальный образ Go
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/main .

# Используем минимальный образ для запуска
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/main .
CMD ["/app/main"]

Сборка и запуск:

docker build -t my-go-app .
docker run -p 8080:8080 my-go-app

Оптимизации:

  • Многоэтапная сборка (builder) уменьшает итоговый образ.
  • Отключение CGO (CGO_ENABLED=0) делает бинарник статически линкованным.
  • Использование alpine уменьшает размер образа.