Docker多阶段构建:减小镜像大小,提升构建效率
创作时间:
作者:
@小白创作中心
Docker多阶段构建:减小镜像大小,提升构建效率
引用
CSDN
1.
https://blog.csdn.net/weixin_53269650/article/details/136253869
Docker多阶段构建是一种在Dockerfile中使用多个FROM
指令来构建镜像的方法。它的主要目的是减小最终生成的镜像大小,并提高镜像的安全性和可维护性。多阶段构建通常用于编译和打包应用程序的过程中。
编写Dockerfile
# 第一阶段:构建应用程序
FROM golang:1.16 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .
# 第二阶段:生成最终镜像
FROM alpine:latest
WORKDIR /app
COPY --from=builder /app/myapp .
CMD ["./myapp"]
这个Dockerfile使用了多阶段构建来构建一个Go应用程序的镜像,并将最终生成的应用程序部署到一个轻量级的Alpine Linux容器中。
这个Dockerfile的工作原理如下:
- 第一阶段使用
golang:1.16
作为基础镜像,并将工作目录设置为/app
。然后,它将当前目录下的所有文件复制到容器中,并使用Go编译器编译应用程序。最终,它将编译好的可执行文件myapp
保存在容器中。 - 第二阶段使用
alpine:latest
作为基础镜像,并将工作目录设置为/app
。然后,它从第一阶段中复制编译好的应用程序myapp
到最终镜像中。最后,它定义了容器启动时运行的命令为./myapp
,这样在容器启动时就会运行我们编译好的应用程序。
优化镜像大小
在第一阶段中,只包含了编译应用程序所需的依赖项和工具,并在第二阶段中只包含了最终运行时所需的文件。这样做可以大大减小最终生成的镜像大小,因为不再需要在最终镜像中包含编译时用到的构建工具和依赖项。
减少镜像层数
多阶段构建还可以减少镜像中的层数,从而提高镜像的构建速度和安全性。每个FROM
指令都会创建一个新的镜像层,通过合并多个步骤,可以减少镜像中的层数。
清理临时文件
在多阶段构建中,在第二阶段中只复制必要的文件,并且不复制第一阶段中生成的临时文件和依赖项,从而进一步减小镜像大小。
总的来说,Docker多阶段构建是一种优化镜像大小和提高构建效率的有效方式。通过合理地划分构建步骤,并使用最小化的基础镜像和依赖项,可以有效地减小最终生成的镜像大小。
热门推荐
aespa 崛起:超越 NewJeans 和 IVE,成为领先女子组合
婴儿的体重正常增长标准是什么?
北宋统一战争:赵匡胤先后灭了哪些周边国家
伤了女友的心,如何弥补?(学会道歉与改正,让爱情更加坚固)
艾灸8大穴位,健脾疏肝双管齐下,这样一来湿气就祛除了,排出一身湿气!
如何提高日语N2听力水平?这10个方法一定要尝试
Soul App联合上海大学发布《2024年青年婚恋观念及趋势调查报告》
家用车选“T”还是“L”?10分钟读懂涡轮增压与自然吸气的较量
手把手教你更新苹果手机:操作指南与注意事项
驴打滚"的传统与现代创新口味比较研究
扁桃体反复发炎?别急着切!1种药+5招护理,保住扁桃体
笔记本电脑与台式电脑游戏:哪个是更好的选择?
了解灰猫的性格特征和品种
4本精彩小说:赛博序列大明、苟道种田修仙、武侠玄幻、巨龙争霸
说好的年底全线通车!成绵扩容你到底行不行啊?
光与夜之恋查理苏角色揭秘:为何自称女主未婚夫?
耐火材料的气孔因素对导热的影响
一周饿2天,降糖效果超过降糖药!轻断食的作用不仅是减肥!
三国时期的十大杰出谋士及其身份
旋钮式档位的使用技巧有哪些?如何快速适应旋钮式档位?
为什么需要定期更新变更管理办法以适应新法规?
有机材料和无机材料怎么区分
雨水节气:千年习俗里的饮食智慧
颞下颌关节脱位影像表现
男生佩戴玉珠手串的讲究:左手还是右手更适合?
DeepSeek“带飞”医疗行业!长沙多家医院接入,有的用DS优化临床方案
火车上的美好时光:阅读、学习与心灵之旅
狗狗倒吸气是怎么回事
艾灸方法和技巧的最全面讲解(新手必看)
国企、央企、外企、民企有何不同?