如何在docker构建步骤中包含构建的maven(JAR)

hlswsv35  于 2022-09-19  发布在  Docker
关注(0)|答案(1)|浏览(172)

我不使用码头多阶段建造。

我已经用Jenkins管道构建了maven to jar文件。

mvn -f /home/app/pom.xml clean package -Dmaven.test.skip

结果文件位于/home/app/target/myfile.jar

在那之后,我想包括这个JAR文件,同时构建docker映像。

我在dockerfile中使用此命令。

COPY /home/app/target/myfile.jar /myfile.jar

但我在构建docker时出错。

COPY failed: stat /var/lib/docker/tmp/docker-builder199377670/home/app/target/myfile.jar: no such file or directory

我明白绝对的道路是动态的。

请帮忙提个建议。如何指定JAR文件的位置。

编辑:已将文件移至与Dockerfile相同的路径,但仍不起作用。

我尝试使用管道复制文件,并验证该文件与Dockerfile位于同一路径。

2022-09-16 12:06:36  + cp /home/app/target/myapp-0.0.1-SNAPSHOT.jar sourceCode/myapp-0.0.1-SNAPSHOT.jar
2022-09-16 12:06:36  + cd sourceCode
2022-09-16 12:06:36  + ls
2022-09-16 12:06:36  Dockerfile
2022-09-16 12:06:36  myapp-0.0.1-SNAPSHOT.jar

在Dockerfile中,我添加了这个复制命令。

COPY /myapp-0.0.1-SNAPSHOT.jar /myapp-docker.jar

但当建造码头时。它仍然找不到源文件。

2022-09-16 12:06:53  Step 3/5 : COPY /myapp-0.0.1-SNAPSHOT.jar /myapp-docker.jar
2022-09-16 12:06:53  COPY failed: stat /var/lib/docker/tmp/docker-builder691591658/myapp-0.0.1-SNAPSHOT.jar: no such file or directory
bsxbgnwa

bsxbgnwa1#

JAR文件的绝对路径必须引用docker构建上下文中的绝对路径,而不是主机的绝对路径。您要复制到docker镜像中的所有资源都必须引用Dockerfile的位置。

例如,如果Docker文件在/home文件夹中,则它是根文件夹,即扩展坞构建上下文中的/COPY命令将为:

COPY /app/target/xxxx.jar /path/to/appfolder/in/image/xxxx.jar

有关详细信息,请查看此page

相关问题