我有一个 Java
构建 jar
然后在 Jboss EAP
服务器。这个 jar
文件是使用maven命令生成的:
mvn clean install
目前我正在建造 jar
手动使用 maven
然后把它加到我的 dockerfile
具体如下:
# rest of dockerfile...
EXPOSE 8080 9990
ADD app.jar "/opt/jboss/jboss-eap-6.2/standalone/deployments/"
RUN ["chmod", "+rx", "/opt/jboss/jboss-eap-6.2/"]
ENTRYPOINT ["sh","/opt/jboss/jboss-eap-6.2/bin/standalone.sh"]
如何添加 maven
命令进入我的 dockerfile
这样开发人员就不需要先安装maven并自己构建它了?
i、 e.步骤如下:
1. checkout the code from git
2. run dockerfile
我认为最好的方法是使用类似于这里所建议的多阶段构建?然而,我不知道如何实现这一点。
2条答案
按热度按时间ruyhziif1#
你可以说在一个文件里做这些!您可以提供说明,先在dockerfile中安装maven,然后从已安装的maven运行所需的任何命令。
例如,
安装maven 3.6.3,然后运行一个命令,不管它是maven clean还是其他什么。
我只是提供了上面的命令,因为我有它,但如果您想要的版本在yum中可用,另一种方法就是使用安装的任何包管理器。就像
RUN yum --assumeyes install ________
.你应该可以用git做一些类似的事情。我会读到关于这方面的最佳实践。
hmmo2u0o2#
马克·奥康纳对你所联系的问题的回答中的dockerfile例子应该非常接近你所需要的。这些是多阶段构建,因为它们有多个
FROM
在他们里面。第一阶段使用已包含maven的基础映像,因此无需安装它:FROM maven:3.6.0-jdk-11-slim AS build
.当前dockerfile内容将成为第二阶段,但需要替换
ADD app.jar ...
用一个COPY
把文件从build
舞台。像这样的这个
--from=build
指AS build
从早期开始。构建阶段的其他文件不会复制到后面的阶段,因此最终图像将只包含最后一个阶段的层FROM
向前。编辑以添加:解决这样做如何防止另一个用户需要手动进行任何构建和安装的问题:新用户可以这样做。假设dockerfile位于git项目的根目录中。