Dockerfile多阶段构建有哪些利弊?

2026-04-28 13:351阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计956个文字,预计阅读时间需要4分钟。

Dockerfile多阶段构建有哪些利弊?

从今往后,公司的CI/CD环境都在Jenkins的工作节点上编译,再将编译打包好的目标程序直接使用dockerfile构建镜像。例如,使用.NET程序作为例子,其dockerfile如下所示:

FROM mcr.microsoft.com/dotnet/aspnet

一直以来,公司的CI/CD环境都是在Jenkins的工作节点中编译,再将编译打包好的目标程序直接使用dockerfile构建镜像。

以.NET程序来做例子,其dockerfile是这样的

FROM mcr.microsoft.com/dotnet/aspnet:3.1-focal WORKDIR /app COPY ./publish /app CMD ["dotnet", "testapi.dll"]

Jenkins的shell脚本

dotnet publish -o ./publish docker build -t testapi .

以上做法是不符合docker的理念的,因为工作节点(docker的宿主机)还需要安装对应程序的sdk才可以进行程序的编译打包。

所以我决定对其进行一点改造,通过Dockerfile的多阶段构建,使程序的编译也依赖于docker镜像,这样工作节点就无需自己再去安装SDK了,以后扩展多个工作节点也方便很多。

阅读全文

本文共计956个文字,预计阅读时间需要4分钟。

Dockerfile多阶段构建有哪些利弊?

从今往后,公司的CI/CD环境都在Jenkins的工作节点上编译,再将编译打包好的目标程序直接使用dockerfile构建镜像。例如,使用.NET程序作为例子,其dockerfile如下所示:

FROM mcr.microsoft.com/dotnet/aspnet

一直以来,公司的CI/CD环境都是在Jenkins的工作节点中编译,再将编译打包好的目标程序直接使用dockerfile构建镜像。

以.NET程序来做例子,其dockerfile是这样的

FROM mcr.microsoft.com/dotnet/aspnet:3.1-focal WORKDIR /app COPY ./publish /app CMD ["dotnet", "testapi.dll"]

Jenkins的shell脚本

dotnet publish -o ./publish docker build -t testapi .

以上做法是不符合docker的理念的,因为工作节点(docker的宿主机)还需要安装对应程序的sdk才可以进行程序的编译打包。

所以我决定对其进行一点改造,通过Dockerfile的多阶段构建,使程序的编译也依赖于docker镜像,这样工作节点就无需自己再去安装SDK了,以后扩展多个工作节点也方便很多。

阅读全文