繁体   English   中英

当链接服务使用 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 文件中的管道工服务配置中以使其工作。

但是,根据此处network_mode: host cannot be mixed with 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 的说明(见上面的评论)和从 Docker 容器内部,我如何连接到机器的本地主机?

  1. 使用ip addr show docker0获取docker0网络接口上的 Docker 主机 IP 地址(在本例中为172.17.0.1
  2. 使用ssh -L 172.17.0.1:9999:localhost:27017 <user>@<mongodb-server> -vN -p22建立SSH隧道
  3. 在我的水管工 R 脚本中,我将 Mongo URL 更改为mongo(...url = "mongodb://172.17.0.1:9999"...)

network_mode: host需要network_mode: host

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM