【发布时间】:2019-06-11 05:18:59
【问题描述】:
有几种方法可以构建 Openshift,其中之一是 Docker build strategy
我的存储库的根目录中确实有一个 Dockerfile:
FROM maven:3.6.1-jdk-8
...
RUN mvn clean package
...
当我执行时
oc new-build https://github.com/myrepo
成功了,但是:
oc 开始构建 ...
无法在工作目录(即/)中找到pom.xml 文件。
使用
RUN echo `find . pom.xml`
我发现pom.xml 文件找不到了。
我怎样才能让它工作?另外,我的方法正确吗?
【问题讨论】:
-
您需要在 Dockerfile 中的 RUN 语句之前添加一个 COPY 语句,以使您的项目文件在容器中可用。也许有可用的图像具有更适合 okd 的默认值(不知道)。您正在使用没有很多假设的官方 maven 图像。有很多方法可以使用 docker 或构建容器来运行构建。不可能说你的方法是否正确——我们不知道你想要实现什么。但它看起来也没有错。应该做点什么:)
-
@wemu 我已经用 COPY 指令和 WORKDIR 解决了它。但是我在尝试将生成的 jar 添加到图像时卡住了:找不到文件错误。
-
你创建的jar文件应该已经在镜像中了。所以添加可能需要一些参数。我认为您所做的是多阶段构建:docs.docker.com/develop/develop-images/multistage-build
-
@wemu 我已经通过使用
mvn clean install而不是mvn clean package让它工作,然后从.m2 位置复制jar。无论如何,这种方法是错误的,因为整个 .m2 文件夹与 maven 安装一起进入映像。多阶段构建的想法听起来很不错,我会尝试的。顺便说一句,如果您对所有建议做出回答,我会接受。 -
会的。点就是点:)
标签: maven docker dockerfile openshift openshift-origin