4

如果您每天部署 5-10 次,那么每次部署时完全重建和推送 docker 映像是否真的可行?

我承认 CircleCI 的Docker 持续集成和交付中提到的好处,即:

请注意,Elastic Beanstalk 还允许您部署 Dockerfile 和关联的源代码而不是构建的映像,但是在 CircleCI 上预先构建映像并对其运行某种形式的验证可以让您的部署更具确定性,因为您删除了构建环境作为测试和生产之间不同的变量。

但是,一旦包含所有依赖项和源代码,我们完全构建的 webapp 映像接近 1GB。我只是不明白部署高达 200GB/月(即每天 10 次提交,持续部署)的实际情况,实际上 99% 的数据在构建之间没有变化。即,它可能只是价值 1k 的 HTML、JS 或 CSS 被更改以添加功能。我更喜欢一种方法,其中 docker 映像包含很少更改的软件,其余的作为捆绑包的一部分被压缩。这仍然会产生一个独立的部署文件(不需要下载进一步的依赖项),但会大大减少构建时间和带宽。

4

1 回答 1

2

当前接受的方法是在机器映像中包含一个基本的 Docker 映像,该映像具有依赖项、操作系统等。使用该 Docker 映像作为FROMDockerfile 中的行。这将利用 Docker 的镜像层并仅下载差异。

您可能仍希望在子 Dockerfile 中安装依赖项,因为它们会随着时间的推移而变化,但请尽量将它们中的大部分保留在基础映像中,以便下载更少。

于 2014-12-25T00:33:12.410 回答