gpt4 book ai didi

java - Docker多阶段构建-为什么要在Docker中构建?

转载 作者:行者123 更新时间:2023-12-02 20:42:30 24 4
gpt4 key购买 nike

Docker / java新手在这里。
this doc中,我看到:

Use multistage builds. For instance, you can use the maven image to build your Java application, then reset to the tomcat image and copy the Java artifacts...



我知道我们使用容器化来确保应用程序的运行时环境完全符合需要,但是为什么我们也需要在容器中运行构建?拥有一个CI / CD管道不够吗?
  • 在/何时/何地需要时清理构建缓存
  • 再次运行构建
  • 使用新 Artifact 创建docker镜像吗?
  • 最佳答案

    如果您的构建 Artifact 是可移植的,并且您不认为主机构建环境很繁琐,那么按照您的描述进行操作绝对没有错。如果围绕SO的Java Docker问题来看,几乎所有的问题都有类似Dockerfiles

    FROM openjdk:8-jre
    COPY myapp.jar /
    CMD ["java", "-jar", "/myapp.jar"]

    实际上,在两种情况下,我会说您应该选择多阶段构建而不是其他选择:
  • 您正在使用一种会生成不可移植二进制文件(C++,Go,Rust)的编译语言,并且无法在本机Linux主机上工作。如果您在Docker内部构建应用程序,它将与最终的Docker运行时使用相同的操作系统。
  • 您的应用程序需要通常用C编写的扩展,这些扩展需要完整的工具链来构建,但不能运行。例如Python MySQL接口(interface)。

  • 如果您的构建系统相当标准化并且产生了可移植的 Artifact ,那么在主机上构建应用程序并将其复制到镜像中就可以了。 Java jar文件非常适合此模式。通过Webpack构建的Javascript浏览器应用程序也是如此。

    关于java - Docker多阶段构建-为什么要在Docker中构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61000461/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com