我正在对要使用 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 的图像,则必须嵌入:

  • JDK
  • Maven
  • 您的来源

  • 这些中的每一个都是完全无用的,并且在图像中占用了大量空间,完全没有任何用处。

    是的,IMO,您仅将 war 添加到您的Docker镜像中,而不是从内部进行构建。

    我认为您不应该在Maven流程中构建docker镜像,这是可以使用一些更高级别的脚本(或jenkins管道)自动化的两个单独的流程

    09-28 12:46