Docker 应用程序打包图片

Docker images for application packaging

应用程序打包和部署似乎有两种做法

  1. 创建 docker 映像并部署它
  2. 从头开始构建和部署应用程序。

我对如何使用选项 1) 感到困惑。前提是你拍了一张docker的图片,在任何平台上重复使用。但是,这在实践中如何成为可行的解决方案,因为环境通常具有特定于平台和应用程序的配置?来自我的测试环境的 docker 图像无法部署到生产环境,因为它包含模拟和测试级配置。

将应用程序打包为 Docker 图像的想法是将所有 external/system 配置嵌入到应用程序本身中。即:外部引擎的任何特定版本,例如 java 或 ruby;基础知识 GNU/Linux 您系统中的软件(不再是不同版本的 awk 或 grep)等

从我的角度来看,开发映像和生产映像之间可能存在一些细微差别,但这种差别应该是较小的配置参数,例如日志级别或类似的东西。使用容器作为应用程序的分发系统的好处是避免了与外部差异相关的所有痛苦,也是解决 'web size architectures' 和弹性平台问题的新方法,具有部署它们的新标准方法.在您的 test/development 系统中模拟一些外部服务应该不是问题,或者如果它们是我认为问题出在模拟本身。模拟应该嵌入到您的应用程序容器中,但您可以将它们作为另一个图像(或者尽可能避免模拟服务并将其用作容器)。

编辑 1: 作为一般方法,如果您使用 Docker 作为帮助持续集成或部署到生产的工具,我不建议为开发和生产使用不同的容器。如果您有使用 IT 自动化工具(如 Puppet、Chef、Ansible 或 Salt)的经验,它们是配置容器的一种简单且可能快速的方法(有些因为 Chef 有 docker 特定方法,chef-container,它在这里有一些优势),如果您的基础设施是使用它们构建的,这是一个不错的选择。 但是,如果你是 building/designing 基于 Docker 的新架构,我会检查其他更分散和面向容器的选项,如 Consul 或 etcd,以管理配置模板和数据、服务发现、弹性部署协调器...