我正在“dockerizing”一个java web应用程序(https://github.com/kermitt2/grobid),我想使用jetty运行它。
这里是 Dockerfile:
FROM jetty:9.3-jre8
ADD ./grobid-home/target/grobid-home-0.4.1-SNAPSHOT.zip /opt
RUN unzip /opt/grobid-home-0.4.1-SNAPSHOT.zip -d /opt && \
rm /opt/grobid-home-0.4.1-SNAPSHOT.zip && \
apt-get update && apt-get -y --no-install-recommends install libxml2
COPY ./grobid-service/target/grobid-service-0.4.1-SNAPSHOT.war \
/var/lib/jetty/webapps/ROOT.war
当前的 docker 镜像运行良好,但需要之前构建应用程序(无法从新的 git 克隆构建)。 例如,我无法使用 docker HUB 构建系统运行构建。
什么是更好的方法?在构建镜像的同时构建maven项目还是在构建成功完成后运行docker?
最佳答案
我假设您正在创建的 docker 镜像用于生产。
如果您创建一个获取源代码并构建 war 的图像,则必须嵌入:
- JDK
- Maven
- 您的来源
这些都是完全无用的,而且会毫无意义地占用图像中的大量空间。
所以,是的,在我看来,你只将 war 添加到你的 Docker 镜像中,而不是从内部构建。
我认为你不应该在你的maven进程中构建你的docker镜像,它是两个独立的进程,你可以使用一些更高级别的脚本(或jenkins管道)来自动化
关于java - 使用 jetty 构建 docker 镜像 - 我应该什么时候构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37962274/