Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/392.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/0/docker/10.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/vim/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
Java 如何使用docker onbuild copy将jar文件从一个docker阶段复制到另一个阶段?_Java_Docker_Gradle_Dockerfile - Fatal编程技术网

Java 如何使用docker onbuild copy将jar文件从一个docker阶段复制到另一个阶段?

Java 如何使用docker onbuild copy将jar文件从一个docker阶段复制到另一个阶段?,java,docker,gradle,dockerfile,Java,Docker,Gradle,Dockerfile,我是Docker的初学者,我试图分两个阶段建立一个形象。 第一个docker文件上载到docker hub,其结构如下: FROM openjdk:8-jdk-alpine ONBUILD COPY app.jar /app.jar CMD ["java", "-jar", "/app.jar"] 第二个dockerfile: FROM gradle:4.7.0-jdk8-alpine AS build COPY --chown=g

我是Docker的初学者,我试图分两个阶段建立一个形象。 第一个docker文件上载到docker hub,其结构如下:

FROM openjdk:8-jdk-alpine 
ONBUILD COPY app.jar /app.jar
CMD ["java", "-jar", "/app.jar"]
第二个dockerfile:

FROM gradle:4.7.0-jdk8-alpine AS build
COPY --chown=gradle:gradle . /home/gradle/src
WORKDIR /home/gradle/src
RUN ./gradlew build

FROM <repo>/<first_docker_file>:1.0
COPY --from=build /home/gradle/src/build/libs/*.jar /app.jar
来自gradle:4.7.0-jdk8-alpine AS-build
复制--chown=gradle:gradle/home/gradle/src
WORKDIR/home/gradle/src
运行./gradlew构建
FROM/:1.0
复制--from=build/home/gradle/src/build/libs/*.jar/app.jar
因此,我需要构建我的项目->生成jar文件->将其复制到第二个docker文件的第二个docker阶段的根目录。 我需要将生成的jar文件从第一阶段复制到第二阶段的根目录,因为“ONBUILD copy app.jar/app.jar”被触发,正在根目录中等待app.jar文件。我在第二个文件中提供的代码不起作用。我也无法更改第一个docker文件的代码。您是否有任何想法,如何使其工作,以及我应该在第二个docker文件中更改什么?

根据我的理解,继承时,
ONBUILD
命令直接插入
From
命令之后

据我所知,这意味着您的
app.jar
需要在发出
FROM
命令时存在,即您的有效Dockerfile如下所示

FROM <repo>/<first_docker_file>:1.0
COPY app.jar /app.jar
COPY --from=build /home/gradle/src/build/libs/*.jar /app.jar
[...]
FROM/:1.0
复制app.jar/app.jar
复制--from=build/home/gradle/src/build/libs/*.jar/app.jar
[...]
这显然是行不通的

似乎您的第一个dockerfile不打算用于分段构建,在第一个dockerfile上发布构建时,您需要在工作目录中获取
app.jar
,也就是说,通过在容器内编译并将
app.jar
复制到第一个dockerfile位置,然后构建它。

从中我了解到,
ONBUILD
命令在继承时直接插入到
From
命令之后

据我所知,这意味着您的
app.jar
需要在发出
FROM
命令时存在,即您的有效Dockerfile如下所示

FROM <repo>/<first_docker_file>:1.0
COPY app.jar /app.jar
COPY --from=build /home/gradle/src/build/libs/*.jar /app.jar
[...]
FROM/:1.0
复制app.jar/app.jar
复制--from=build/home/gradle/src/build/libs/*.jar/app.jar
[...]
这显然是行不通的


似乎您的第一个dockerfile不打算用于分段构建,在第一个dockerfile上发布构建时,您需要在工作目录中获取
app.jar
,也就是说,在一个容器内编译,然后将你的
app.jar
复制到你的第一个dockerfile位置,然后构建它。

你所描述的不能按原样工作。问:你能更新你的帖子来解释为什么你需要分阶段构建吗?构建链背后的“需求”?您所描述的不能按原样工作。问:你能更新你的帖子来解释为什么你需要分阶段构建吗?构建链背后的“需求”?