Ответ
Типичный Dockerfile для Spring Boot приложения включает:
# 1. Базовый образ с JDK
FROM openjdk:17-jdk-slim
# 2. Рабочая директория в контейнере
WORKDIR /app
# 3. Копирование собранного JAR-файла
COPY target/myapp-*.jar app.jar
# 4. Экспорт порта приложения
EXPOSE 8080
# 5. Команда запуска
ENTRYPOINT ["java", "-jar", "app.jar"]
Ключевые элементы:
- Базовый образ — минимальный образ с нужной версией JDK (например,
openjdk:17-jdk-slim) - Копирование артефакта — JAR/WAR файл, собранный заранее
- Точка входа — команда запуска приложения
- Экспорт порта — документация о используемом порте
Multi-stage сборка (рекомендуется):
# Этап сборки
FROM maven:3.8.6 AS build
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests
# Этап выполнения
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY --from=build /app/target/*.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]
Преимущества multi-stage:
- Финальный образ содержит только runtime, без инструментов сборки
- Уменьшение размера образа
- Повышение безопасности