【问题标题】:How to consume a web API which is deployed on Docker desktop client?如何使用部署在 Docker 桌面客户端上的 Web API?
【发布时间】:2020-07-18 00:41:12
【问题描述】:

我正在自学 .Net core 和 docker。

我开发了一个 .Net 核心 API 原型,该原型部署在我的机器上运行的 docker 桌面客户端上,我想在桌面应用程序中使用它。

下面提到的尝试使用 API 的代码给出错误:

无法连接到服务器

Dim request As WebRequest =  WebRequest.Create("http://localhost:54382/weather")
Dim response As WebResponse = request.GetResponse()

我猜问题出在端口号上。我正在针对正在运行的应用程序使用 docker 客户端上显示的端口。

我想要一个通用的修复程序,它可以与 docker 桌面客户端一起使用,也可以在应用程序部署在 docker hub 上时使用。

【问题讨论】:

  • 你是如何运行 docker 容器的?
  • 在 Visual Studio 上,工具栏上的 Docker 选项运行。在 docker 客户端,仪表板上我可以看到应用程序正在运行。

标签: docker asp.net-web-api .net-core port


【解决方案1】:

有两个独立的网络。 docker内部是一个网络。在 docker 之外,在主机上,它是另一个网络。如果您通过 localhost 或 IP 地址访问它,它将无法按预期工作。您必须跨越网络边界并进入主机边界。或者你必须告诉 docker network 如何解析特殊的 localhost。运行这个命令,你就会对 docker 网络有所了解:

docker network ls

你应该看到一个非常相似的输出:

NETWORK ID          NAME                DRIVER              SCOPE
58a4dd9893e9        133_default         bridge              local
424817227b42        bridge              bridge              local
739297b8107e        host                host                local
b9c4fb3ed4ba        none                null                local

您需要在本地主机上添加服务主机。尝试像下面的命令一样运行:

docker run --add-host myservice:<ip address of host computer> <your image>

希望这会解决它。

更多:https://docs.docker.com/engine/reference/run/#managing-etchosts

【讨论】:

    猜你喜欢
    • 2012-03-17
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 2022-08-06
    • 1970-01-01
    • 2016-07-31
    • 1970-01-01
    相关资源
    最近更新 更多