【问题标题】:Build locally and the output to docker image vs Build while creating docker image在本地构建并在创建 docker 镜像时输出到 docker image vs Build
【发布时间】:2019-10-11 06:33:58
【问题描述】:

我有一个 Java 应用程序,现在需要 dockerized,我有 2 个选项。

  1. 本地构建并将目标文件夹生成的jar添加到docker镜像中。
  2. 在创建映像时构建它。喜欢,
    FROM maven:3-jdk-11 as builder

    COPY propel_settings_local.xml /root/.m2/settings.xml

    RUN mkdir -p /build

    ADD . /build/
    WORKDIR /build

    RUN mvn -B dependency:resolve dependency:resolve-plugins

    RUN mvn clean install

这两个选项中哪个更好?

【问题讨论】:

    标签: docker dockerfile containers


    【解决方案1】:

    这两个选项看起来都不错,但我会说这完全取决于您的情况,但您可以在下面考虑其中的一些。

    本地构建并将目标文件夹生成的jar添加到docker 图片。

    • 此选项适合您在本地计算机上工作并需要频繁构建和更新映像。
    • 为此,您还需要一个能够生成 jar 的适当本地环境
    • 开发者还需要搭建一个本地的java环境,简而言之,使用容器复制构建和挂载jar文件就可以了。

    在创建映像时构建它。

    • 此方法适用于 CI/CD,但请遵循 multi-stage 以保持您的 docker 镜像较小,或者您也可以查看 @Tushar 答案。
    • 使用这种方法,您的开发人员无需在本地系统上安装 Java 环境

    此外,您可以自行探索best practices7-best-practices-for-building-containers

    【讨论】:

      【解决方案2】:

      我有springboot应用,一直在关注docker的多阶段构建理念

      FROM maven:3-jdk-11 as builder
      
      WORKDIR chooseTheOneYouWant
      
      COPY . .  ( i.e. copy whole of your code into the work directory)
      
      RUN mvn -B package
      
      FROM openjdk:8
      
      RUN mkdir /usr/app
      
      COPY --from=build .jarFile /usr/app
      
      WORKDIR /usr/app
      
      CMD ["java", "-jar", "/usr/app/.jarFile"]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-10-06
        • 1970-01-01
        • 2021-11-13
        • 1970-01-01
        • 2016-08-16
        • 2017-10-20
        • 2018-09-28
        • 1970-01-01
        相关资源
        最近更新 更多