type
status
date
slug
summary
tags
category
icon
password
docker 真是博大精深啊
Docker的多阶段构建是一种优化Docker镜像构建的技术,允许在单个
Dockerfile
中使用多个FROM
语句。这种方法可以帮助减小最终镜像的大小,因为它允许你在一个阶段中安装和构建应用程序的依赖项,然后仅将必要的文件复制到最终镜像中,而不包括用于构建应用程序但在运行时不需要的工具和文件。📝 主旨内容
Docker 多阶段构建的优点
- 减小镜像大小:不需要在最终镜像中包括构建工具和临时文件。
- 安全性提升:减少了最终镜像中可能存在的安全漏洞,因为不必包括用于构建但在运行时不必要的软件包。
- 构建速度提升:通过重用已构建的中间镜像,可以减少重复的构建步骤,提高构建速度。
- 组织和维护:多阶段构建使得Dockerfile更加清晰和易于维护。
多阶段构建的例子
假设你正在创建一个简单的Node.js应用程序的Docker镜像。你的应用程序需要编译,但你不希望将所有编译依赖项都包含在最终的镜像中。
以下是一个使用多阶段构建的
Dockerfile
示例:在这个
Dockerfile
中:- 第一阶段称为
build-stage
,使用node:14
作为基础镜像,负责安装依赖和构建应用程序。
- 第二阶段称为
production-stage
,使用node:14-slim
作为更小的基础镜像,仅从build-stage
中复制必要的build
目录和node_modules
到最终镜像中,然后运行应用程序。
通过这种方式,你可以将最终镜像的大小和安全风险降到最低,同时保持构建过程的灵活性和可维护性。
🤗 总结归纳
千里之行,始于足下,我有一个学长说刚到公司啥也不干,写了两天dockerfile,有点吓人的,现在做开发不学,以后说不定做科研还得学。
📎 参考文章/链接
有关这篇博客的任何问题,欢迎您在底部评论区留言,我会在github邮箱中第一时间收到邮件,让我们一起交流~
- Author:Zachary_Yang
- URL:https://notion-next-git-main-little1ds-projects.vercel.app//560c90c2b73c4ebe8728ceec38d28f06
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!