如何在Docker中分割Web应用程序

我只需要确认我没有过分复杂的事情。 我更喜欢主机系统上的数据专用容器。

我想如下划分通常的java webapp

  • 服务器映像(服务器env在我的地方通用)
  • 数据库图像
  • 应用程序可部署(仅限数据)
  • configuration(仅数据)
  • db数据(仅数据)
  • 日志数据卷(主机系统上的某个地方)

我看到一些问题

  • 我如何维护多个configuration图像,即开发,testing,质量保证?(因为Docker Hub不支持分支机构)
  • 我希望我可以使用“docker导出”来移动数据库周围的数据,如果debbuging,对不对?
  • 是否有可能在所有数据库的外部位置(数据专用容器)上有数据库文件?
  • 如何把它放在一起,除了Docker Compose,还有其他的可能性,因为它说:“我们不build议你在生产中使用它。”?

  1. 它支持:)你可以决定之间的标签/分支机构设置自动构build。
  2. docker export导出文件系统,不pipe它是否与数据库相关。 最好使用数据库引擎自带的导出工具,如mysqldump for mysql。 您可以独立运行它作为一个容器与数据库链接或使用进程注入与docker执行导出
  3. 您需要安装外部位置(如果要将其托pipe在不同的服务器上),请使用卷,但不要针对相同的数据库文件运行多个引擎。 如果你想运行多个数据库,只需创build单独的文件夹/卷
  4. 您可以使用systemd / etcd设置CoreOS群集,您可以使用Fleet编写Unit文件来描述应用程序(服务)的结构。 舰队有更多的select比docker组成和devise的分布式/集群环境。 只要到CoreOS页面查看例子。 不幸的是docker工具是目前相当有限的工具