docker-compose无法解析服务主机名 [英] docker-compose fails to resolve service hostname

查看:206
本文介绍了docker-compose无法解析服务主机名的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Docker文档说,可以使用服务名称相互访问同一撰写文件中的每个容器.除lb以外,这似乎适用于我所有的容器.

Docker documentation says that every container in the same compose file can be accessed from each other by using their service names. This seems to be working for all my containers except the lb.

version: "3"
services:
  lb:
    image: nginx
    volumes:
      - ./conf/nginx:/etc/nginx/conf.d/default.conf
    ports:
      - "8080:80"
    environment:
      - NGINX_HOST=foobar.com
      - NGINX_PORT=80
    stdin_open: true
    tty: true

  worker1:
    build: ./rel_sync_worker/.
    stdin_open: true
    tty: true
    depends_on :
      - broker
      - lb

  worker2:
    build: ./rel_sync_worker/.
    stdin_open: true
    tty: true
    depends_on :
      - broker
      - lb

  broker:
    build: ./broker/.
    ports:
      - "4444:4444/udp"
    stdin_open: true
    tty: true
    depends_on:
      - lb

broker1.py

broker1.py

import socket
host = socket.gethostbyname("broker")
print "broker", host
host = socket.gethostbyname("worker1")
print "worker1", host

host = socket.gethostbyname("lb")
# host = "127.0.0.1"
print host
port = 5555

broker1输出:

broker1 output:

broker_1   | broker 172.18.0.4
broker_1   | worker1 172.18.0.2
broker_1   | Traceback (most recent call last):
broker_1   |   File "sendertest.py", line 11, in <module>
broker_1   |     host = socket.gethostbyname("lb")
broker_1   | socket.gaierror: [Errno -2] Name or service not known

推荐答案

也许您应该为它们添加一个公共网络.

Maybe you should add them a common network.

version: "3"
services:
  lb:
    image: nginx
    volumes:
      - ./conf/nginx:/etc/nginx/conf.d/default.conf
    ports:
      - "8080:80"
    environment:
      - NGINX_HOST=foobar.com
      - NGINX_PORT=80
    stdin_open: true
    tty: true
    netwok:
      - common-network

  worker1:
    build: ./rel_sync_worker/.
    stdin_open: true
    tty: true
    depends_on :
      - broker
      - lb
    netwok:
      - common-network   

  worker2:
    build: ./rel_sync_worker/.
    stdin_open: true
    tty: true
    depends_on :
      - broker
      - lb

  broker:
    build: ./broker/.
    ports:
      - "4444:4444/udp"
    stdin_open: true
    tty: true
    depends_on:
      - lb
    netwok:

networks:
  common-netwok:
    driver: overlay

如果您的lb容器正在工作,我看不出还有什么可能给您带来这种问题,也许您的default.conf文件不正确.

I don't see what else could give you that kind of problem if your lb container is working ofc, maybe your default.conf file isn't correct.

希望有帮助.

这篇关于docker-compose无法解析服务主机名的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆