java - 如何在 Docker 中对 Web 应用程序进行分区

标签 java docker

我只需要确认我没有把事情复杂化。与主机系统上的卷相比,我更喜欢纯数据容器的想法。

我想把通常的java webapp划分如下

  • 服务器镜像(服务器环境在我这里很常见)
  • 数据库图片
  • 应用程序可部署(仅数据)
  • 配置(仅数据)
  • 数据库数据(仅数据)
  • 日志数据量(主机系统某处)

我看到了一些问题

  • 如何维护多个配置镜像,即开发、测试、QA?(因为 Docker Hub 不支持分支)
  • 我希望我可以使用“docker export”来移动数据库数据,以备调试,对吧?
  • 是否有可能将所有数据库的数据库文件都放在外部位置(仅数据容器)?
  • 如何组合起来,除了据说“我们不建议您在生产中使用它”的 Docker Compose 之外,还有其他可能性吗?

最佳答案

  1. 它支持 :) 您可以在设置自动构建时决定标签/分支。
  2. docker export 导出文件系统,不管它是否与数据库相关。最好使用数据库引擎自己的导出工具,如 mysqldump for mysql。您可以将其作为具有数据库链接的容器独立运行,或者使用带有 docker exec 的进程注入(inject)来导出
  3. 您需要挂载外部位置(如果您想将其托管在不同的服务器上)然后使用卷,但不要针对相同的数据库文件运行多个引擎。如果你想运行多个数据库,只需为它们创建单独的文件夹/卷
  4. 您可以使用 systemd/etcd 设置一个 CoreOS 集群,您可以使用 Fleet 编写单元文件来描述您的应用程序(服务)的结构。 Fleet 比 docker compose 有更多的选择,专为分布式/集群环境而设计。只需转到 CoreOS 页面并检查示例。不幸的是,docker compose 目前是一个非常有限的工具

关于java - 如何在 Docker 中对 Web 应用程序进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32472374/

相关文章:

java - NanoHttpd 服务器无法在 android 上流式传输大型视频

docker - 从 Dockerfile 定义一个 crontab,利用主机的 crontab 每小时运行一个容器化的 Go 程序

docker - 在没有 docker-compose.yml 文件的情况下杀死 docker-compose 容器

Java 8过滤器考虑流的多个项目

java - JNI目录结构c和java

具有离散值的 Java for 循环

java - 使用吗啡数据存储在 mongodb 中查询和更新

python - 在 Docker 容器中安装 python 时执行格式错误

java - 如何打开在Docker容器上运行的应用程序的远程调试?

docker - docker反向代理:无法在多个网桥网络上使用jwilder/nginx反向代理