Расскажи про свой опыт работы с Docker

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

Ответ

Я работаю с Docker около 4 лет, в основном для контейнеризации микросервисных приложений и настройки локальных сред разработки. Мой опыт включает:

  • Разработка и оптимизация Dockerfile: Создание многоступенчатых сборок для уменьшения итогового образа, использование .dockerignore, выбор минимальных базовых образов (например, alpine).
  • Оркестрация с docker-compose: Настройка сетей, volumes и зависимостей между сервисами (например, веб-приложение, база данных, кэш, очередь сообщений) для локального запуска всего стека одной командой.
  • Интеграция в CI/CD: Автоматизация сборки образов, тестирования и публикации в реестр (Docker Hub, GitLab Registry) с помощью GitHub Actions и GitLab CI.
  • Работа в production: Настройка логгирования, мониторинга контейнеров и управления секретами через Docker Swarm в прошлых проектах.

Пример оптимизированного Dockerfile для Go-приложения:

# Этап сборки
FROM golang:1.21-alpine 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 ./cmd/app

# Финальный образ
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /app/main .
EXPOSE 8080
CMD ["./main"]

Такой подход позволяет создать безопасный и минимальный образ (около 10 МБ), содержащий только скомпилированный бинарник и необходимые системные библиотеки.

Видео-ответы