java - 使用 jetty 构建 docker 镜像 - 我应该什么时候构建?

标签 java docker maven build

我正在“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/

相关文章:

java - mvn clean、mvn install 和 mvn clean install 之间的区别

java - spring bean配置文件放在什么位置

java - StreamHandler接口(interface)的onListen方法中的arguments param到底是什么

linux - 无法使用文件/etc/docker/daemon.json : EOF 配置 Docker 守护程序

maven - 无法禁用生成空 JAR (maven-jar-plugin)

docker - 使用 ln 查看 docker 内已安装卷的协议(protocol)错误

google-chrome - docker 官方 dind 构建 (docker :latest) with chromiuim

java - 将信息从 Android 发布到 PHP 服务器

java - 在创建一个将在多个级别频繁引用的 java 对象时,使用类实例还是将类设为静态更好?

java - 如何将字符串转换为日历对象?