Настраивали ли вы Docker-образы и контейнеры?

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

Ответ

Да, настраивал. Основная работа включала:

  • Создание Dockerfile: Прописывал инструкции для сборки образа.
  • Оптимизация: Использовал многоступенчатую сборку и .dockerignore для уменьшения размера образа.
  • Оркестрация: Работал с docker-compose.yml для запуска связанных сервисов (например, приложение + БД).

Пример Dockerfile для Spring Boot приложения:

# Многоступенчатая сборка для оптимизации
FROM maven:3.8-openjdk-17 AS builder
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests

# Финальный образ
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY --from=builder /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app/app.jar"]

Практика: В docker-compose.yml настраивал volumes для сохранения данных, networks для изоляции и environment variables для конфигурации.