“获取错误”;复制失败:stat/home/app/target/Service.jar:文件不存在;在多级docker构建中

“获取错误”;复制失败:stat/home/app/target/Service.jar:文件不存在;在多级docker构建中,docker,gitlab,dockerfile,gitlab-ci,docker-registry,Docker,Gitlab,Dockerfile,Gitlab Ci,Docker Registry,我的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 EXPOS

我的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:文件不存在”

注意:当我们执行“runls/home/app”命令时,它的列表文件和目标目录


有人可以帮忙吗。

您的pom中是否定义了
最终名称

<build>
        <finalName>${project.artifactId}</finalName>
        <plugins>
...

不要忘记始终使用相同的大小写(服务!=服务)

文件不存在。您可以在
运行mvn-f…
之后
运行ls-lisa/home/app/target
,以列出
target
文件夹的内容。当我们执行“RUN ls/home/app”命令时,其列表文件和目标目录。它是否在
/home/app/target
中列出
Service.jar
?对,那么
target
目录是否有
Service.jar
文件(我想是从
运行ls/home/app/target
),我们不应该发布推测性的答案。我们应该在评论中要求澄清。@Turing85我通常同意,但我确信答案是朝着这个方向发展的……如果OP已经确定了最终名称,然后发布答案,那么在评论中首先这样做还是没有坏处的。此外,我建议不要更改
finalName
,而是修改dockerfile,下次thx会这样做
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"]