Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Dockerfile Add命令找不到目标文件夹_Java_Spring Boot_Docker_Dockerfile_Devops - Fatal编程技术网

Java Dockerfile Add命令找不到目标文件夹

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

我在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.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是容器上的目录,而不是本地系统上的目录。