Java Dockerfile Add命令找不到目标文件夹
我在Spring Boot应用程序的根目录中有一个Dockerfile,并且在如下结构所示的相同路径中有一个目标文件夹:Java Dockerfile Add命令找不到目标文件夹,java,spring-boot,docker,dockerfile,devops,Java,Spring Boot,Docker,Dockerfile,Devops,我在Spring Boot应用程序的根目录中有一个Dockerfile,并且在如下结构所示的相同路径中有一个目标文件夹: |--src |--main |--com.abc.myApp |--target/xyz.jar |--Dockerfile |--pom.xml 我的Dockerfile如下所示: From openjdk:8-jdk-alpine WORKDIR /opt ADD /target/xyz.jar . Step 3/3 : ADD /target/xyz
|--src
|--main
|--com.abc.myApp
|--target/xyz.jar
|--Dockerfile
|--pom.xml
我的Dockerfile如下所示:
From openjdk:8-jdk-alpine
WORKDIR /opt
ADD /target/xyz.jar .
Step 3/3 : ADD /target/xyz.jar .
ADD failed: stat /var/lib/docker/tmp/docker-builder225663872/target/xyz.jar: no such file or directory
当我尝试使用以下命令执行时:
docker build . -t xyz
我得到的错误如下:
From openjdk:8-jdk-alpine
WORKDIR /opt
ADD /target/xyz.jar .
Step 3/3 : ADD /target/xyz.jar .
ADD failed: stat /var/lib/docker/tmp/docker-builder225663872/target/xyz.jar: no such file or directory
Dockerfile位于/opt/MyApp/Dockerfile,目标文件夹位于/opt/MyApp/target/xyz.jar
我哪里做错了?此外,我没有任何
.dockrignore
文件。由于jar文件也将包含版本号,因此最好使用此解决方案
FROM openjdk:8-jdk-alpine
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
ARG的存在是因为COPY不能使用通配符
如前所述,您必须首先致电:
mvn package
请阅读有关Spring Boot和Docker的更多信息:
从Spring2.3开始,您甚至不需要Dockerfile。你可以跑
mvn spring-boot:build-image
同时阅读以下内容:注意你在构建图像的位置。例如,如果您在主目录中:- /家庭/用户/ 您的Dockerfile和jar放在同一个目录中。Docker文件应具有以下条目:-
FROM adoptopenjdk/openjdk11:alpine-jre
ADD item-0.0.1-SNAPSHOT.jar itemapp.jar
ENTRYPOINT ["java","-jar","itemapp.jar"]
Add不应具有/target路径。请尝试删除目录的初始斜杠。添加target/xyz.jar。已经尝试过了,但仍然面临相同的问题。我仍然想知道为什么Dockerfile引用/var/lib路径而不是/opt,或者Dockerfile位置尝试运行
/mvnw clean package
首先构建项目因为有斜杠,所以路径将来自根。另外,您提供的WORKDIR是容器上的目录,而不是本地系统上的目录。