获取链接容器的主机

时间:2018-04-15 21:28:28

标签: docker docker-compose dockerfile

我有以下设置:

services:
  web: &web
    ports:
      - "3000:3000"
    env_file:
      - .env.web
    links:
      - google_service

  google_service:
    command: bundle exec rails s -b 0.0.0.0 -p 3001
    ports:
      - "3001:3001"
    environment:
      RAILS_ENV: development

当我运行docker-compose run --publish 3000:3000 web时,我可以在浏览器中访问lvh.me:3001

但是当我在容器web中尝试访问此网址时,我会Errno::ECONNREFUSED (Failed to open TCP connection to test.lvh.me:3001 (Connection refused - connect(2) for "127.0.0.1" port 3001)):

如何从容器网络中的容器google_service访问端口3001? 感谢

1 个答案:

答案 0 :(得分:1)

作为Creek的建议,从Web容器调用google服务容器的最佳方法是解决google_service:3001

在通过docker compose创建的网络中,容器通过服务名称相互了解,无论它们是否已链接。默认情况下,他们彼此了解。

如果您想通过主机访问它,请使用主机的IP或DNS名称或使用网络模式作为主机" https://docs.docker.com/compose/compose-file/#network_mode"在码头工作中撰写。
使用主机网络模式时,localhost将成为主机&不是容器本身。