一个部署方案,麻烦大家帮忙看看,给点建议


web1、web2共用一套MySQL和MongoDB。现在的方案是:web1(PHP)、web2(PHP)、MySQL、MongoDB各单独占用一个容器。共有四个数据卷容器:
  • 容器webdata1,提供web1的资源和配置;
  • 容器webdata2,提供web2的资源和配置;
  • 容器dbdata_mysql,提供MySQL的数据文件和配置;
  • 容器dbdata_mongo,提供MongoDB的数据文件和配置;


使用一个数据管理容器data_manage容器管理四个数据卷容器的数据,包括版本更新(使用SVN/Git)、数据备份,这样的话web1、web2容器可共用一个镜像,数据容器也可以有一些基础的镜像提供基础配置。
(好像有点多- -...)

不知道现在主流的生产环境部署一般是什么样的结构,有没有什么实用的原则,希望各位指教!
已邀请:

xds2000 - 数人科技CTO

赞同来自: xiaolunsanguo icebolt


首先,楼主的目标达到了,实现了容器化,这个没得说,很棒。这里主要的关注点就是数据文件要不要放到单独的容器里来管理。楼主创新的地方就是我把所有和数据相关的放在一个容器里,这样备份管理都没有问题了。我其实并不推荐这么操作。为什么不推荐有以下理由:

1、容器最大的好处就是隔离。镜像里包含的内容最好不变,也就是状态不要变。像数据这种每时每刻都在变化的内容,直接放在存储设备上是最好的,你都不用单独备份了。

2、容器本身是有大小限制的,Docker的文件系统如果是DeviceMapper,还会有100G大小的初始化设置,要扩容,还要再次初始化。所以直接用挂载数据目录的方式是最合适的。

3、数据库已经很成熟,容器并不能给数据库去掉单点的问题。所以,我们用容器来管理数据库有可能得不偿失。我相信这里唯一的好处就是,如果我们要再同一台主机上启动多个数据库实例,更简单的,不用再改目录名字了。

DockOne - DockOne官方账号

赞同来自: Burling


配置文件的问题,可以看看这个帖子:http://dockerone.com/question/54

Sonyfe25cp

赞同来自:


我的部署也是这样的..
一堆tomcat容器link一个mysql,配置文件和数据文件由单独容器管理。

不写个脚本都记不住...

田浩浩 - wizmacau developer

赞同来自:


请参考:
C72A0CFC-715D-4810-A89F-E9AD500BBFC4.png

bnuhero - 读书喝茶踢球写程序

赞同来自:


所有的这些容器都是在一台主机上运行吗?

icebolt - Docker爱好者暗黑

赞同来自:


数据建议直接放到宿主机上,尤其是生产环境。
如果是开发环境,倒是可以利用docker数据卷容器的灵活性,能随意变更数据源。

建议规划单独的目录,对所有数据统一管理,比如建立/data目录,然后在下面加入/data/HTML,/data/DB,/data/LOG等
如果数据增长比较快,可以用lvm,ceph进行对磁盘进行管理。

tonynba - 每天进步一点点

赞同来自:


请问下你这个组网模式是host还是什么?

要回复问题请先登录注册