3
  1. 我有一个 docker-compose.yml,我在其中创建了 2 个容器:A 和 B。
  2. B 是在端口 8000 上运行的 Web 服务器,在我的 docker-compose 文件中,我公开了端口 8000
  3. A 在我的 docker-compose-file 中有一个指向 B 的链接。

但是当我在 B 上发出 GET 请求时,我得到了一个错误:

GET http://localhost:8000 dial tcp 127.0.0.1:8000 refused

我该如何解决?

docker-compose ps 只是告诉我端口是8000/tcp

4

1 回答 1

4

你能告诉我们你的 docker-compose.yml 文件吗?用于两个容器之间链接的名称实际上创建了一个别名来连接,就像localhost127.0.0.1https ://docs.docker.com/compose/yml/#links 的别名

所以你不应该localhost在你的 GET 请求中连接 via。而是使用在服务 B 的链接中使用的名称,并在其后加上端口。这是一个带有适当 GET 请求 url 的示例配置文件:

码头工人-compose.yml:

service_a:
    image: service_a_image
    ports:
        - 7000 # maps port to host
    links:
        - service_b
service_b:
    image: serivce_b_image
    expose:
        - 8000 # exposes port to other containers

从服务 A 到 B 获取 URL:

http://service_b:8000

希望这可以帮助!

于 2015-07-20T01:17:52.150 回答