/
Al
/
TESamples
Обзор
Документация
Войти
/
Al
/
TESamples
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
apps/spring/Dockerfile
47 строк
2 KB
Al
Initial Commit
11 май 2026, 17:40
11 май 2026, 17:40
0a04577
Код
Авторство
О чём код?
# ============================================================= # Общий multi-stage Dockerfile для всех Spring-модулей. # # Использование (в compose): # build: # context: ./apps/spring # args: # MODULE: bff-agent # или chain-service # # BuildKit cache mount держит .m2 между ребилдами — повторные сборки быстрые. # ============================================================= # ---------- Build stage ---------- FROM maven:3.9-eclipse-temurin-21 AS build WORKDIR /workspace ARG MODULE # Копируем все pom'ы первым слоем для эффективного кеша зависимостей. COPY pom.xml . COPY token-exchange-lib/pom.xml token-exchange-lib/pom.xml COPY bff-agent/pom.xml bff-agent/pom.xml COPY chain-service/pom.xml chain-service/pom.xml # Прогоняем go-offline для слоя зависимостей (BuildKit-кеш на ~/.m2). RUN --mount=type=cache,target=/root/.m2 \ mvn -B -pl ${MODULE} -am dependency:go-offline -DskipTests || true # Копируем источники и собираем нужный модуль с подмодулями (-am). COPY token-exchange-lib/src token-exchange-lib/src COPY bff-agent/src bff-agent/src COPY chain-service/src chain-service/src RUN --mount=type=cache,target=/root/.m2 \ mvn -B -pl ${MODULE} -am package -DskipTests # Извлекаем итоговый jar (Spring Boot repackage = uber-jar; .original — это исходный # jar до repackage и нам не нужен). RUN ls -l ${MODULE}/target/ && \ cp $(ls ${MODULE}/target/*.jar | grep -v '\.original$' | head -1) /workspace/app.jar # ---------- Runtime stage ---------- FROM eclipse-temurin:21-jre WORKDIR /app COPY --from=build /workspace/app.jar /app/app.jar EXPOSE 8080 ENTRYPOINT ["sh","-c","exec java ${JAVA_OPTS} -jar /app/app.jar"]