为什么 docker 容器内的应用程序无法访问它自己的 API 端点?

问题描述 投票:0回答:1

我在 Windows 上使用 docker 桌面应用程序。 在 Ubuntu WSL2 中,我有一个 docker 容器,其中运行着meteor/nodejs 服务器。 从 WSL 内部通过 docker-compose 启动。

docker-compose.yaml
  ...
  environment:
    - ROOT_URL=http://localhost:8080
    - PORT=8080
  ports:
    - "8080:8080"

现在 docker 容器内的应用程序必须访问自身的 HTTP 端点,如

http://127.0.0.1:8080/api

当我从码头外部调用此端点时,我得到了正确的结果。
当我使用终端连接到 docker 容器并卷曲端点时,我得到了正确的结果。
但是,当容器内运行的正在运行的应用程序/服务尝试通过具有相同 URL 的相同端点调用自身时,我收到

ECONNREFUSED - CONNECTION REFUSED
错误。

这可能是什么问题?也许是 WSL2 安全问题?

node.js docker meteor windows-subsystem-for-linux
1个回答
0
投票

如果不查看实际代码或查看完整的错误消息,我无法确定什么,但请尝试替换你的

- ROOT_URL=http://localhost:8080

- ROOT_URL=http://127.0.0.1:8080

如果您还有任何其他带有 localhost url 的地方,也请替换它们。

© www.soinside.com 2019 - 2024. All rights reserved.