特殊的需求
小白手套吐槽,我们这小公司,啥啥没有,小李还需要使用容器作为部署环境,但没有运维的支持
项目 N 多,每个项目需要的环境又不一样
我每次需要手动编译我的项目,再自己找到 Dockerfile 生成可部署的镜像,真的好麻烦,有什么黑科技可以帮我解决自动编译并且构建为镜像呢 ?
Multi-stage builds
通过多阶段构建,可以
FROM在 Dockerfile 中使用多个语句。每条FROM指令可以使用不同的基础,并且每条指令都开始构建的新阶段。可以有选择地将工件从一个阶段复制到另一个阶段,从而在最终镜像中留下不想要的所有内容。
有没有感觉上面的关键词,阶段,有点像流水线呢?流水线运行过程中会注入 N 多依赖,比如 基于我的基础环境,可能做一些代码检查,代码编译等动作,但最终是为了拿到一个可以部署的包,那么最终部署环境又不需要依赖编译环境,这样就造成了我的镜像越来越大的问题。(当然,Multi-stage 并不是唯一方案,只是对于有镜像优化需求的人来讲,可能更有用)
Docker Multi-stage builds 的出现核心是为了优化镜像大小和减少不必要的依赖,那么我们也可以基于多阶段构建这个特性,来完成一个伪 CI (自动编译+打出一个可以部署的镜像)二合一的 Dockerfile
实际操作
下面的流程为:
1、我需要一个 Node 环境满足我的编译场景,编译后将 dist 文件作为产出物
2、将 dist 文件加入我的 Apache (即一个 web 服务器),最后启动镜像可以成功访问我

文章讲述了在小型公司中,如何通过Docker的Multi-stagebuild功能自动化项目部署过程,减少手动编译和镜像体积。作者介绍了多阶段构建的概念,展示了如何在Dockerfile中分阶段处理代码编译、依赖管理和最终部署,以优化镜像和提高开发效率。
最低0.47元/天 解锁文章





