#java #docker #jenkins #gradle #micronaut
Вопрос:
мы хотим создать серверную часть на основе платформы micronaut (java) с Дженкинсом и докером.
Локально все работает нормально. Но не через Дженкинса/докера.
Сообщение об ошибке
Во время построения изображения возникает следующая ошибка:
Step 7/11 : COPY --from=build ./build/layers/libs /home/app/libs
COPY failed: stat /var/lib/docker/overlay2/33b475c0bb868e9d61905995e0bd720a30cfde48e7e28acbb31a8a0d88474e24/merged/build/layers/libs: no such file or directory
Докерфайл
FROM gradle:7.2.0-jdk16 as build
WORKDIR /app
COPY --chown=gradle:gradle . /app
RUN gradle build --no-daemon
FROM openjdk:16-alpine
WORKDIR /home/app
COPY --from=build /app/build/layers/libs /home/app/libs
COPY --from=build /app/build/layers/resources /home/app/resources
COPY --from=build /app/build/layers/application.jar /home/app/application.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/home/app/application.jar"]
Фрагмент файла Дженкинса
stage('Backend: Build Docker image') {
steps {
script {
if (env.BRANCH_NAME == 'master' || env.BRANCH_NAME == 'pipeline') {
docker.withServer("${dockerServer}") {
docker.withRegistry("https://${dockerRegistry}", 'ci-bot-docker') {
dir ("backend") {
def image = docker.build("${dockerRegistry}/product/${env.BRANCH_NAME}/backend:latest", "-f Dockerfile .")
image.push()
}
}
}
}
}
}
}
Я попытался переместить сборку с помощью gradle из файла Dockerfile в файл Jenkins в качестве отдельного шага. Возникает та же ошибка. Я поискал вокруг и нашел решения, которые также не помогли.
Можете ли вы помочь мне, пожалуйста, исправить это 🙂
бг
Себастьян
Комментарии:
1. Убедитесь, что файлы из сборки находятся там, где вы их ожидаете, добавив
RUN ls -R /app/build
их послеgradle build
команды в файле Dockerfile.2. это не тот же файл Docker: ошибка показывает,
COPY --from=build ./build/layers/libs /home/app/libs
какой относительный путь указан в файле docker/app//build/layers/libs
Ответ №1:
причиной были неправильные пути.
Правильные пути-это:
COPY --from=builder /app/build/docker/layers/libs /home/app/libs
COPY --from=builder /app/build/docker/layers/resources /home/app/resources
COPY --from=builder /app/build/docker/layers/application.jar /home/app/application.jar