Docker / java新手在这里。
在this doc中,我看到:
Use multistage builds. For instance, you can use the
maven
image to build your Java application, then reset to thetomcat
image and copy the Java artifacts...
我知道我们使用容器化来确保应用程序的运行时环境完全符合需要,但是为什么我们也需要在容器中运行构建?拥有一个CI / CD管道不够吗?
最佳答案
如果您的构建 Artifact 是可移植的,并且您不认为主机构建环境很繁琐,那么按照您的描述进行操作绝对没有错。如果围绕SO的Java Docker问题来看,几乎所有的问题都有类似Dockerfiles
FROM openjdk:8-jre
COPY myapp.jar /
CMD ["java", "-jar", "/myapp.jar"]
实际上,在两种情况下,我会说您应该选择多阶段构建而不是其他选择:
如果您的构建系统相当标准化并且产生了可移植的 Artifact ,那么在主机上构建应用程序并将其复制到镜像中就可以了。 Java jar文件非常适合此模式。通过Webpack构建的Javascript浏览器应用程序也是如此。
关于java - Docker多阶段构建-为什么要在Docker中构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61000461/