我正在对要使用 jetty 运行的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 clone构建)。
例如,我无法使用docker HUB构建系统运行构建。
什么是首选方法?在构建镜像时构建Maven项目,还是在构建成功完成后运行docker?
最佳答案
我假设您正在创建的docker镜像用于生产。
如果您创建一个使用源头并进行 war 的图像,则必须嵌入:
这些中的每一个都是完全无用的,并且在图像中占用了大量空间,完全没有任何用处。
是的,IMO,您仅将 war 添加到您的Docker镜像中,而不是从内部进行构建。
我认为您不应该在Maven流程中构建docker镜像,这是可以使用一些更高级别的脚本(或jenkins管道)自动化的两个单独的流程