【发布时间】:2021-11-16 20:11:35
【问题描述】:
我们想构建一个基于 micronaut 框架 (java) 与 jenkins 和 docker 的后端。
本地一切正常。但不是通过 jenkins/docker。
错误信息
在构建镜像的过程中出现以下错误:
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
Dockerfile
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"]
Jenkinsfile sn-p
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 移动到 Jenkinsfile 作为单独的步骤。发生同样的错误。我四处搜索并找到了也无济于事的解决方案。
你能帮我解决这个问题吗:)
bg
塞巴斯蒂安
【问题讨论】:
-
通过在 Dockerfile 中的
gradle build命令后添加RUN ls -R /app/build来验证构建中的文件是否在您期望的位置。 -
这不是同一个 Dockerfile: error show
COPY --from=build ./build/layers/libs /home/app/libswhich use a relative path your docker file shows/app//build/layers/libs
标签: java docker jenkins gradle micronaut