当我尝试将生成的 jar 文件从目标文件夹复制到 Docker 映像中的 /usr/share/ 文件夹时,出现此错误。我搜索了 Docker 论坛网站,人们也遇到了完全相同的问题,但没有明确的答案可以解决这个问题。
Step 9/10 : COPY target/${JAR_FILE} /usr/share/${JAR_FILE}
ERROR: Service 'myservice' failed to build: COPY failed: stat /var/lib/docker/tmp/docker-builder558103764/target/myservice.jar: no such file or directory
Run Code Online (Sandbox Code Playgroud)
这是我的 Dockerfile: ----------------------- 开始 ---------
FROM adoptopenjdk/openjdk11:alpine
MAINTAINER XXX XXX <ramil.xxxxx@xxxx.ai>
# Add the service itself
ARG JAR_FILE="myservice-1.0.0.jar"
RUN apk add maven
WORKDIR /app
COPY . /app/
RUN mvn -f /app/pom.xml clean install -DskipTests
WORKDIR /app
COPY target/${JAR_FILE} /usr/share/${JAR_FILE}
ENTRYPOINT ["java", "-jar", "/usr/share/myservice-1.0.0.jar"]
------ end snip -------
Run Code Online (Sandbox Code Playgroud)
以下是我如何从 Mac 上存放 Dockerfile 的基本文件夹运行此命令。
docker build -t service-image .
Run Code Online (Sandbox Code Playgroud)
所以我猜您正在尝试将 src 移动到映像并运行mvn
构建并将构建的文件从目标复制到共享文件夹。
如果是这样,除了这一行之外,一切似乎都很好
COPY target/${JAR_FILE} /usr/share/${JAR_FILE}
Run Code Online (Sandbox Code Playgroud)
COPY 接受 src 和目的地。它只允许您将本地文件或目录从主机(构建 Docker 映像的机器)复制到 Docker 映像本身
我认为您的意图是将容器内的文件复制 /target
到/usr/share
文件夹。尝试这个
RUN cp target/${JAR_FILE} /usr/share/${JAR_FILE}
Run Code Online (Sandbox Code Playgroud)
您看到的重新分级错误是因为使用COPY
命令 Docker 会尝试从主机中的 docker 默认路径获取文件
IE/var/lib/docker/tmp/docker-builder558103764/
其中/target
文件夹不存在