Tag: 连续传送

如何用Docker实现“一二进制”原则

一个二进制原则在这里解释: http : //programmer.97things.oreilly.com/wiki/index.php/One_Binary指出,应该… “构build一个可以在发布pipe道的所有阶段识别和升级的二进制文件,在环境中保存特定于环境的详细信息,例如,这可能意味着将它们保存在组件容器中,已知文件中或path。” 我看到许多开发人员工程师通过在每个环境中创build一个Docker镜像(即,my-app-qa,my-app-prod等)来违反这一原则。 我知道Docker支持不可变的基础架构,这意味着部署后不会更改映像,因此不会在部署后上传或下载configuration。 在不可改变的基础设施和一个二元原理之间是否存在一个权衡,还是它们可以相互补充? 当涉及到从代码分离configuration什么是在Docker世界的最佳做法? 应采取以下哪一种方法… 1)创build一个基本的二进制镜像,然后configuration一个Dockerfile,通过添加环境特定的configuration来扩充这个镜像。 (即我的应用程序 – >我的应用程序产品) 2)在部署时将一个仅二进制docker映像部署到容器中,并通过环境variables传递configuration等。 3)将Docker文件部署到容器后上传configuration 4)从configurationpipe理服务器中从容器内正在运行的泊坞窗镜像下载configuration。 5)保持主机环境中的configuration,并通过绑定挂载使其可用于正在运行的Docker实例。 有没有更好的方法没有提到上面? 如何使用不可变的基础架构来执行一个二进制原则? 它可以做到还是有一个权衡? 最佳做法是什么?