如何在链接服务使用 network_mode=host 时为 docker compose 配置 dockercloud/haproxy
How to configure dockercloud/haproxy for docker compose when linked service uses network_mode=host
我有水管工服务并使用 dockercloud/haproxy 进行负载平衡。我将 docker-compose 用于 运行 我的 Docker 应用程序:
docker-compose.yml
version: '3'
services:
plumber:
image: registry.code.roche.com/tmbd/tsi-api:latest
command: /plumber.R
volumes:
- ./plumber/plumber.R:/plumber.R
restart: always
lb:
image: 'dockercloud/haproxy:latest'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: always
links:
- plumber
ports:
- 80:80
此配置工作正常。现在我已经扩展了我的 plumber.R
脚本以与远程服务器上的 MongoDB 通信,我使用
建立了 SSH 隧道
autossh -M 20000 -L 9999:localhost:27017 <user>@<mongodb-server> -vN -p22
此外,我将 network_mode: host
添加到 yml 文件中的管道工服务配置中以使其工作。
但是,根据 here network_mode: host
不能与 links
和 docker 混合使用-compose 给出以下错误消息:
lb_1 | [ALERT] 208/120346 (9) : parsing [/haproxy.cfg:41] : 'server tsi-api_plumber_1' : could not resolve address 'tsi-api_plumber_1'.
我尝试了不同的方法,但都没有用。有人可以帮助调整 docker-compose.yml 来告诉负载平衡要平衡哪个服务吗?
我基本上遵循了 David 的指示(见上面的评论)和 From inside of a Docker container, how do I connect to the localhost of the machine?
- 使用
ip addr show docker0
在 docker0
网络接口(在此示例中 172.17.0.1
)上获取 Docker 主机 IP 地址
- 使用
ssh -L 172.17.0.1:9999:localhost:27017 <user>@<mongodb-server> -vN -p22
建立SSH隧道
- 在我的管道工 R 脚本中,我将 Mongo URL 更改为
mongo(...url = "mongodb://172.17.0.1:9999"...)
不需要network_mode: host
。
我有水管工服务并使用 dockercloud/haproxy 进行负载平衡。我将 docker-compose 用于 运行 我的 Docker 应用程序:
docker-compose.yml
version: '3'
services:
plumber:
image: registry.code.roche.com/tmbd/tsi-api:latest
command: /plumber.R
volumes:
- ./plumber/plumber.R:/plumber.R
restart: always
lb:
image: 'dockercloud/haproxy:latest'
volumes:
- /var/run/docker.sock:/var/run/docker.sock
restart: always
links:
- plumber
ports:
- 80:80
此配置工作正常。现在我已经扩展了我的 plumber.R
脚本以与远程服务器上的 MongoDB 通信,我使用
autossh -M 20000 -L 9999:localhost:27017 <user>@<mongodb-server> -vN -p22
此外,我将 network_mode: host
添加到 yml 文件中的管道工服务配置中以使其工作。
但是,根据 here network_mode: host
不能与 links
和 docker 混合使用-compose 给出以下错误消息:
lb_1 | [ALERT] 208/120346 (9) : parsing [/haproxy.cfg:41] : 'server tsi-api_plumber_1' : could not resolve address 'tsi-api_plumber_1'.
我尝试了不同的方法,但都没有用。有人可以帮助调整 docker-compose.yml 来告诉负载平衡要平衡哪个服务吗?
我基本上遵循了 David 的指示(见上面的评论)和 From inside of a Docker container, how do I connect to the localhost of the machine?
- 使用
ip addr show docker0
在 - 使用
ssh -L 172.17.0.1:9999:localhost:27017 <user>@<mongodb-server> -vN -p22
建立SSH隧道
- 在我的管道工 R 脚本中,我将 Mongo URL 更改为
mongo(...url = "mongodb://172.17.0.1:9999"...)
docker0
网络接口(在此示例中 172.17.0.1
)上获取 Docker 主机 IP 地址
不需要network_mode: host
。