补充:
目前三台物理机测试环境,192.168.2.10,192.168.2.11,192.168.2.12 (所以现在受限于三个测试环境)
假如目前两个项目分别域名是 www.proja.com www.projb.com (跟生产一样的域名)
然后两个项目的 docker 组暴露 81,82
现在是宿主机的 nginx 类似
server {
listen 80
server_name www.proja.com
location / {
proxy_pass http://127.0.0.1:81
}
}
server {
listen 80
server_name www.projb.com
location / {
proxy_pass http://127.0.0.1:82
}
}
测试的时候就绑定host
192.168.2.10 www.proja.com
192.168.2.10 www.projb.com
来进行功能测试。
(为了不增加测试人员跟开发人员的反复扯皮、问这问那,尽量测试人员那边少配置,配置host对于他们来说都感觉复杂度高一样。。。。。。。特别是产品验收的时候,产品压根不跟你配置host就想验收)
现在就是想能多几个环境能直接绑定host就能测试。
经过研究,macvlan 和 ipvlan 都行,让宿主机直接充当交换机,
然后原帖子里面的想法一里面的用不了这个 c 段,后面经过一系列的搜索,可以提前创建好 network,然后采用 external:true 就可以直接使用同一个 c 段网络。
如图: (如果图片打不开,可访问 gist 查看下。 图床用了微博,没referer可能会ban)
1
libook 2022-08-29 17:47:32 +08:00 1
你有多个服务,基本就只能用反向代理还根据 HTTP 请求特征来分流,比如域名、路径等。
你多个服务一定都必须用 80 端口吗?每个服务都单独用一个唯一端口就好了吧,比如从 9000 开始往后排,前端调用后端的地址做成统一配置文件可配的,每次部署的时候根据所用的测试服务的地址和端口号配置一下就好了。 |
2
herozzm 2022-08-29 17:49:09 +08:00 1
docker 不接管宿主机的端口管理权限,用 iptables 将 80 端口转发给 nginx ,然后 nginx 来设置域名转发即可
|
3
XiLingHost 2022-08-29 17:54:56 +08:00 1
试试 traefik ,用 docker provider 来提供配置,这样就不需要把容器的端口暴露出来了,只需要在 label 里配置好服务和路由就行了
https://doc.traefik.io/traefik/providers/docker/ |
4
momocraft 2022-08-29 17:56:42 +08:00 1
没看出为什么只能有 3 个环境 这限制哪来的
|
6
lovelylain 2022-08-29 18:15:17 +08:00 via Android 1
whistle 正向代理改请求咯
|
7
bwangel 2022-08-29 18:37:59 +08:00 1
你开发是在宿主机上进行的吗?如果是的话可以试试这样的方法,一台宿主机就够了
修改 /etc/hosts ,绑定 N 个开发用的域名到 127.0.0.1 这样 nginx 就能配置无限多个域名,根据 host route 到不同的 docker 端口上了。 |
8
momocraft 2022-08-29 18:51:27 +08:00 2
一个 ip 可以 host 无数个域名
把私有 ip 绑到域名上 就不用让客户端机器改 hosts 了 |
9
butanediol2d 2022-08-29 19:06:54 +08:00 via iPhone 2
推荐一个 nip.io
它可以把 *.a.b.c.d.nip.io 解析为 a.b.c.d |
10
LindsayZhou 2022-08-29 23:04:07 +08:00 1
我记得 docker 端口映射可以指定绑定的 ip 吧,物理网卡上多加几个 ip 就行了,直接加还是用桥接应该都可以。
不过加多个同网段的 ip 说不定会有坑,路由问题上的,这个不太确定。 |
11
imycc 2022-08-29 23:32:29 +08:00 1
emm ,端口不暴露到宿主机,只暴露到容器内部的网络上,就不用考虑冲突的问题。查出来几个 web 入口的容器 ip 地址,配置在 nginx 上。这样麻烦的地方在于重启机器跟环境之后 ip 可能会变,得重新配一下,要不入口会乱掉。
|
12
shenqi OP @LindsayZhou 这个方案算是目前最接近我的想法的,还在尝试中。但是我猜想的做法不是物理上加多网卡,而是想办法将单个物理网卡设置多个虚拟成实际可访问 ip 的网卡。
|
13
mk0114 2022-09-07 23:19:33 +08:00
@butanediol2d 可惜没有办法在内网搞到证书不然就完美了
|
14
butanediol2d 2022-09-08 00:44:12 +08:00 via iPhone
@mk0114 用自签证书呗
|
15
mk0114 2022-09-08 08:38:44 +08:00
@butanediol2d 可是你还得让测试和产品再安装证书,让他们改个 hosts 文件都难。
|
16
mk0114 2022-09-08 10:47:55 +08:00
去阿里几块钱弄个域名,然后泛域名解析到你局域网内的 ip ,通过泛域名前缀来反向代理 docker 内的服务就行了
|