java - 尝试在多阶段 docker 构建中复制它时找不到我的 jar 文件
问题描述
所以我对 docker 很陌生,我一直在尝试 dockerise 我的 spring-boot 应用程序。我设法让它与给定的 JAR 文件一起工作,但现在我想进行多阶段构建以使用 gradle 构建 JAR 文件,这样我就不必在运行之前手动生成 JARdocker build {app-name}
这是我目前的设置。它找不到 jar 文件,我不知道如何导航文件系统来找到它(除了在 dockerfile 中运行 shell 命令以打印出文件和文件夹)
FROM gradle:jdk8 as build
COPY --chown:gradle:gradle . /home/gradle/src
WROKDIR /home/gradle/src
RUN gradle clean build --parallel
FROM openjdk:8-alpine
WORKDIR /usr/app
COPY --from=build /home/gradle/src/app-name.jar /usr/app/
RUN sh -c 'touch app-name.jar'
ENTRYPOINT ["java", "-jar", "app-name.jar"]
Step 7/9. : COPY —from=build /home/gradle/src/app-name.jar /usr/app/
COPY failed: stat /var/lib/ldocker/overlay2/22e326d9f26f581a629417c35e226428f3cc63fd496799c55dde4be413ca26690/merged/home/gradle/src/app-name.jar: no such file or directory
解决方案
该COPY
指令需要从 gradle 的build/libs/
目录中复制,该目录是构建工件的默认位置 - 因为它正在寻找项目根目录中的 JAR。这应该有效:
COPY —from=build /home/gradle/src/build/libs/app-name.jar /usr/app
这假设 Dockerfile 位于项目的根目录中。如果不是,那么您需要相应地调整 dockerfile 中使用的复制路径。
推荐阅读
- node.js - 乘客没有运行 nodejs 应用程序的多个实例
- visual-studio-code - NestJS/VSCode 调试在域代码中不起作用
- python-3.x - 向图像 png 添加一些比特流
- python - 此代码作为骰子可以正常工作,但我希望它在每次滚动后再次重复,谢谢您的回答
- android - 字符串数组在 Flutter 中返回 Null
- java - 执行 Open Visual Traceroute 时出现 Java 错误
- python - 如何在图中排列打印语句,python
- python - Python beautifulsoup 代码没有正确循环元素
- php - 如何从现有的 PHP curl 句柄获取原始 curl 请求
- c++ - 直接读取 48bit RGB tile float-Tiff 图像并更改 leptonica 中的 24bit RGB DIB Buffer