如果每天部署5-10次,那么每次部署时完全重建和推送docker镜像是否真的很实用?
我承认CircleCI的Continuous Integration and Delivery with Docker中提到的好处,即:
请注意,Elastic Beanstalk还允许您部署Dockerfile和相关的源代码而不是构建的映像,但是在CircleCI上预构建映像并在其上运行某种形式的验证可以使您的部署更具确定性,因为您删除了构建环境作为测试和生产之间不同的变量。
但是,一旦包含所有依赖项和源代码,我们完全构建的webapp映像接近1GB。我只是看不到如何部署高达200GB /月(即每天10次提交,持续部署)是多么实际,而实际上99%的构建之间没有变化。也就是说它可能只是1k的HTML,JS或CSS被改为添加功能。我更喜欢这样一种方法,其中docker镜像包含很少更改的软件,其余的作为捆绑包的一部分被压缩。这仍然会导致自包含的部署文件(无需进一步的依赖性需要下载),但会大大减少构建时间和带宽。
答案 0 :(得分:2)
目前接受的方法是在机器映像中包含一个具有依赖关系,操作系统等的基本Docker镜像。将Docker镜像用作Dockerfile中的FROM
行。这将利用Docker的图像层并仅下载差异。
您可能仍希望在子Dockerfile中安装依赖项,因为它们会随着时间的推移而发生变化,但请尝试将大部分依赖项保留在基本映像中,以便下载更少。