docker - 在多阶段 docker build 中出现错误“复制失败:stat /home/app/target/Service.jar:文件不存在”
问题描述
我的 Docker 文件是,
FROM maven:3.6.0-jdk-11-slim AS build
COPY src /home/app/src
COPY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean package
FROM openjdk:11-jre-slim
COPY --from=build /home/app/target/Service.jar /usr/local/lib/Service.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar","/usr/local/lib/service.jar"]
执行 COPY --from 行时,出现错误“COPY failed: stat /home/app/target/Service.jar : file does not exist”。
注意:当我们执行“RUN ls /home/app”命令时,它会列出文件和目标目录。
有人可以帮忙吗。
解决方案
finalName
你的pom中有定义吗?
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
...
如果不是,则生成的工件将在名称中具有版本控制,并且不会被调用Service.jar
,但类似于Service-1.0-SNAPSHOT.jar
FROM maven:3.6.0-jdk-11-slim AS build
COPY src /home/app/src
COPY pom.xml /home/app/pom.xml
WORKDIR /home/app
RUN mvn clean package
FROM openjdk:11-jre-slim
COPY --from=build /home/app/target/Service_AND_VERSION_STUFF.jar /usr/local/lib/Service.jar
EXPOSE 8081
ENTRYPOINT ["java","-jar","/usr/local/lib/Service.jar"]
不要忘记始终使用相同的外壳(服务!=服务)
推荐阅读
- c - 水平循环scanf
- wordpress - 在 Laravel 中获取最近的 wordpress 帖子
- reactjs - 为什么(机械) jsx 不允许在扩展名为 .js 的文件中
- asp.net-core - 如何使用内置授权在 Asp.net Core 2.x 中动态(AdminUser 运行时)添加角色及其对象权限?
- qt - QML SplitView:此控件如何将其子项处理为内部项?
- python - 设计简单自动编码器时的尺寸误差
- r - 需要一年的几个季度
- xml - USPS 追踪 Xml
- python - python max():如何忽略列表中的对象
- android - 在 firebase 中注册的一个项目中可以添加多少个 android 应用程序?