目前有一个想法,希望做一个基于 docker 集群的 开发 测试 系统,但是有一个问题 觉得很难解决。
以下场景为假设
有 3 台主机 分别是 A B C, 上面已经安装了 docker 和 相应的 docker 镜像,A 为接入主机,上面有个 nginx ,所有访问通过它 进行
目前 我有一个小的团队,我需要开发一个小的 web app, 比如就叫 webshow 项目吧
web show 项目 由 3 个部分组成 第一个是一个 php 的 web 前端 假设为 主机
php.webshow.com
一个为 api 模块 假设为
api.webshow.com
最后一个是 静态文件 模块 假设为
cdn.webshow.com
现在的要求是如何在这个系统里多次部署这套系统呢?
比如 用户 a , checjkout 一套 代码 build 了最基本的系统, 然后部署了,最终 我把 3 套模块分别 装载在 3 个 docker 里运行。比如 php 运行在 A 主机 100 号端口 api 运行在 B 主机 200 号端口 cdn 运行在 C 主机 300 号端口
在入口 A 主机的 nginx ,做 3 个 upstream , 那么就好了。
如果此时 用户 b checjkout 一套 代码 修改了一些代码, 重新编译了一下 然后部署
最后结局 第二套系统 的 php 运行在 A 主机 101 号端口 api 运行在 B 主机 201 号端口 cdn 运行在 C 主机 301 号端口
目前第二套系统是运行起来了,但是相互之间无法联通的。因为 A 主机不知道该如何做定向,
能想到的解决方案
1. 每次发布前, 对域名进行改变 比如 第一次部署 就叫
001.php.webshow.com 001.api.webshow.com 001.cdn.webshow.com, 这样是可以的, 当然访问系统 也从访问
php.webshow.com 变成了访问
001.php.webshow.com . 同时这意味着 开发者需要修改内部的代码,把所有的域名都改掉,本来是访问
api.webshow.com 的服务,这下要改成
001.api.webshow.com 002.api.webshow.com。 如果系统很庞大,这样每次部署前修改基本是不可控的。
目标,同一套系统 可以多次运行在这个集群上,从外部可以直接访问。不知道有什么好的设计方案吗?