如何将链接容器视为localhost?

Dou*_*gui 14 docker docker-compose

我有这两个容器:

api:
  image: social-learning
  ports:
    - "3000:3000"
  command: bundle exec rails s -p 3000 -b '0.0.0.0'
  volumes:
    - ../api:/app
  expose:
    - "3000"
web:
  image: social-learning-frontend
  ports:
    - "4200:4200"
    - "9000:9000"
  command: ember serve -p 4200
  volumes:
    - .:/app
  links:
    - api
  expose:
    - "3000"
Run Code Online (Sandbox Code Playgroud)

当我做:

docker exec `docker ps -a | grep 'frontend_web_1' | awk '{print $1 }'` curl http://localhost:3000
Run Code Online (Sandbox Code Playgroud)

我总是拒绝连接.我可以通过其IP访问另一个容器,但我更喜欢将其作为localhost.

可能吗?

Adr*_*uat 9

这里似乎有些混乱.

看起来您正在尝试登录Web容器并使用localhost地址访问api容器?这不会起作用.

最好的解决方案就是使用您声明的链接; 在Web容器中,您应该能够做到curl http://api:3000.这是有效的,因为Docker /etc/hosts为您添加了api容器的条目.

访问途径localhost只能在发布容器端口的Docker主机上运行.我想你可以通过Docker桥(例如curl 172.17.42.1:3000)从容器内访问Docker主机,但这似乎是毫无意义的复杂和脆弱.