我有以下设置:
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? 感谢
答案 0 :(得分:1)
作为Creek的建议,从Web容器调用google服务容器的最佳方法是解决google_service:3001
。
在通过docker compose创建的网络中,容器通过服务名称相互了解,无论它们是否已链接。默认情况下,他们彼此了解。
如果您想通过主机访问它,请使用主机的IP或DNS名称或使用网络模式作为主机" https://docs.docker.com/compose/compose-file/#network_mode"在码头工作中撰写。
使用主机网络模式时,localhost
将成为主机&不是容器本身。