代码之家  ›  专栏  ›  技术社区  ›  John Smith

获取链接容器的主机

  •  0
  • John Smith  · 技术社区  · 6 年前

    我有以下设置:

    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 我尝试访问我获得的此url Errno::ECONNREFUSED (Failed to open TCP connection to test.lvh.me:3001 (Connection refused - connect(2) for "127.0.0.1" port 3001)):

    如何从容器web中的容器google\u服务访问端口3001? 谢谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   vivekyad4v    6 年前

    正如Creek所建议的,从web容器调用google服务容器的最佳方法是寻址 google_service:3001

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

    如果要通过主机访问,请使用主机的IP或DNS名称或使用网络模式作为主机“ https://docs.docker.com/compose/compose-file/#network_mode “在docker compose中。
    使用主机网络模式时, localhost 将是主机;而不是容器本身。