Этот вопрос проверяет знание базовых принципов контейнеризации и умение упаковать Java-приложение в Docker-контейнер для удобства запуска и деплоя.
Java-приложение можно контейнеризовать, создав Dockerfile, в котором указывается базовый образ с JDK или JRE, копируется jar-файл и прописывается команда запуска. Это позволяет запускать приложение изолированно, независимо от настроек окружения. Основные шаги — сборка jar-файла, написание Dockerfile и сборка образа с помощью команды docker build.
Контейнеризация — это способ упаковать приложение вместе со всеми его зависимостями в единый переносимый контейнер. Для Java-приложений используется следующий процесс:
Обычно с помощью Maven или Gradle:
mvn clean packageЭто создаст файл target/app.jar.
Простой Dockerfile может выглядеть так:
FROM openjdk:17-jdk-slim
COPY target/app.jar app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]FROM — базовый образ с Java.
COPY — копирует jar-файл внутрь контейнера.
ENTRYPOINT — указывает команду запуска.
docker build -t my-java-app .docker run -p 8080:8080 my-java-appКонтейнер теперь доступен по порту 8080.
Можно использовать переменные окружения, volume'ы и другие опции Docker при запуске.
Jib от Google — позволяет собирать образы без Dockerfile, прямо из Maven/Gradle.
Multi-stage builds — оптимизация размера образа, разделяя стадии сборки и выполнения.
Когда использовать:
Когда нужно обеспечить одинаковое поведение приложения на всех средах (dev/test/prod).
Когда хотите деплоить в Kubernetes, AWS ECS, GCP Cloud Run и другие оркест