Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.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/7/arduino/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
Docker与Maven的构建策略_Maven_Docker_Dockerfile_Openshift_Openshift Origin - Fatal编程技术网

Docker与Maven的构建策略

Docker与Maven的构建策略,maven,docker,dockerfile,openshift,openshift-origin,Maven,Docker,Dockerfile,Openshift,Openshift Origin,有几种方法可以构建Openshift,其中之一是 我的存储库根目录中确实有Dockerfile: FROM maven:3.6.1-jdk-8 ... RUN mvn clean package ... 当我执行 oc新建 它成功了,但是: oc开始构建 未能在工作目录(即/)中找到pom.xml文件 使用 RUN echo `find . pom.xml` 我发现没有找到pom.xml文件 我怎样才能让它工作?另外,我的方法正确吗?在您的情况下,您需要向Dockerfile添加一个

有几种方法可以构建Openshift,其中之一是

我的存储库根目录中确实有Dockerfile:

FROM maven:3.6.1-jdk-8

...


RUN mvn clean package

...
当我执行

oc新建

它成功了,但是:

oc开始构建

未能在工作目录(即
/
)中找到
pom.xml
文件

使用

RUN echo `find . pom.xml`
我发现没有找到
pom.xml
文件


我怎样才能让它工作?另外,我的方法正确吗?

在您的情况下,您需要向Dockerfile添加一个COPY语句,以便项目文件可供运行容器中的maven使用。然后用RUN语句启动构建

由于您可能不会运行要在maven映像上创建的docker映像,因此您可以查看一下。它允许使用一个映像运行构建,并基于不同的映像将文件传递到新映像中


这是在创建期间使用docker构建映像在docker映像内创建应用程序的常用方法。所以到目前为止一切看起来都很好。

在您的情况下,您需要向Dockerfile添加一个COPY语句,以便项目文件在运行的容器中可供maven使用。然后用RUN语句启动构建

由于您可能不会运行要在maven映像上创建的docker映像,因此您可以查看一下。它允许使用一个映像运行构建,并基于不同的映像将文件传递到新映像中


这是在创建期间使用docker构建映像在docker映像内创建应用程序的常用方法。因此,到目前为止一切看起来都很好。

您需要在RUN语句之前的Dockerfile中添加一个COPY语句,以使您的项目文件在容器中可用。也许有一些图像更适合okd的默认设置(我不知道)。您使用的是官方的maven图像,没有太多假设。有很多方法可以使用docker或build容器运行构建。很难说你的方法是否正确——我们不知道你想要实现什么。但它看起来也没有错。应该做点什么:)@wemu我已经用拷贝指令和WORKDIR解决了它。但是我在尝试将生成的jar添加到image:file not found error时遇到了问题。您创建的jar文件应该已经在映像中了。所以add可能需要一些参数。我认为您所做的是一个多阶段构建:@wemu我使用
mvn clean install
而不是
mvn clean package
将jar从.m2位置复制。无论如何,这种方法是错误的,因为整个.m2文件夹都随maven安装一起进入映像。多阶段构建的想法听起来很好,我会试试。顺便说一句,如果你回答了所有的建议,我会接受的。点是点:)您需要在运行语句之前在Dockerfile中添加一个COPY语句,以使您的项目文件在容器中可用。也许有一些图像更适合okd的默认设置(我不知道)。您使用的是官方的maven图像,没有太多假设。有很多方法可以使用docker或build容器运行构建。很难说你的方法是否正确——我们不知道你想要实现什么。但它看起来也没有错。应该做点什么:)@wemu我已经用拷贝指令和WORKDIR解决了它。但是我在尝试将生成的jar添加到image:file not found error时遇到了问题。您创建的jar文件应该已经在映像中了。所以add可能需要一些参数。我认为您所做的是一个多阶段构建:@wemu我使用
mvn clean install
而不是
mvn clean package
将jar从.m2位置复制。无论如何,这种方法是错误的,因为整个.m2文件夹都随maven安装一起进入映像。多阶段构建的想法听起来很好,我会试试。顺便说一句,如果你回答了所有的建议,我会接受的。点是点:)