我只需要确认我没有把事情复杂化。与主机系统上的卷相比,我更喜欢纯数据容器的想法。
我想把通常的java webapp划分如下
- 服务器镜像(服务器环境在我这里很常见)
- 数据库图片
- 应用程序可部署(仅数据)
- 配置(仅数据)
- 数据库数据(仅数据)
- 日志数据量(主机系统某处)
我看到了一些问题
- 如何维护多个配置镜像,即开发、测试、QA?(因为 Docker Hub 不支持分支)
- 我希望我可以使用“docker export”来移动数据库数据,以备调试,对吧?
- 是否有可能将所有数据库的数据库文件都放在外部位置(仅数据容器)?
- 如何组合起来,除了据说“我们不建议您在生产中使用它”的 Docker Compose 之外,还有其他可能性吗?
最佳答案
- 它支持 :) 您可以在设置自动构建时决定标签/分支。
- docker export 导出文件系统,不管它是否与数据库相关。最好使用数据库引擎自己的导出工具,如 mysqldump for mysql。您可以将其作为具有数据库链接的容器独立运行,或者使用带有 docker exec 的进程注入(inject)来导出
- 您需要挂载外部位置(如果您想将其托管在不同的服务器上)然后使用卷,但不要针对相同的数据库文件运行多个引擎。如果你想运行多个数据库,只需为它们创建单独的文件夹/卷
- 您可以使用 systemd/etcd 设置一个 CoreOS 集群,您可以使用 Fleet 编写单元文件来描述您的应用程序(服务)的结构。 Fleet 比 docker compose 有更多的选择,专为分布式/集群环境而设计。只需转到 CoreOS 页面并检查示例。不幸的是,docker compose 目前是一个非常有限的工具
关于java - 如何在 Docker 中对 Web 应用程序进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472374/