azure - 无法从同一计算机上的 docker 容器连接到 Azure 存储模拟器

标签 azure docker asp.net-core visual-studio-2017 docker-compose

我成功在 Visual Studio 2017 中对 .net core 2.2 Web api 应用程序进行了 Docker 化。该应用程序的一部分应该将一些数据存储到运行 VS 2017 的同一台计算机上运行的 Azure 存储模拟器。模拟器的配置如下所示:

<services>
   <service name="Blob" url="http://127.0.0.1:10000/"/>
   <service name="Queue" url="http://127.0.0.1:10001/"/>
   <service name="Table" url="http://127.0.0.1:10002/"/>
</services>

docker-compose.yml 文件具有以下网络定义:

build:
      context: .
      dockerfile: MyWebApi\Dockerfile
      network: host

我可以在 https://127.0.0.1:44315/api/values 查看 Web api 的输出

根据我的理解,“主机”网络配置通过将容器的主机的 IP 地址分配给容器来完成其工作,到目前为止看起来不错。问题是,为什么容器中的 dockerized Web 应用程序无法与模拟器通信,尽管有上述配置。此练习中缺少什么?

最佳答案

据我所知,Azure 存储模拟器绑定(bind)在仅限本地的网络配置中,并且Docker for WindowsVM中运行> 使用Hyper-V

恐怕解决方案是使用 microsoft/azure-storage-emulator开发时创建图像并将您的 API 指向它。

更新

您还可以尝试使用 host.docker.internal 而不是 127.0.0.1 作为连接字符串中的主机(这也可能让您使用运行的模拟器在您的主机上而不是容器上)。

希望对你有帮助!

关于azure - 无法从同一计算机上的 docker 容器连接到 Azure 存储模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53843918/

相关文章:

azure - 发布 ReportGenerator 的代码覆盖率结果不起作用

.net - Azure AD 通过 headless 登录向自定义开发的应用程序授予权限

c# - 需要帮助构建 Azure 项目

postgresql - 如何用 fig 恢复 postgres 数据库?

docker - 如何在基于 Alpine 的图像上使用 CMD 中的 ENV 变量?

c# - Nswag 添加了对可空/可选参数的空检查

javascript - Signalr Core 1.0.3 - 在页面刷新时保持连接

asp.net-core - 什么是最好的... ASP.NET Core 模块 processPath 到 .exe 或 .dll

Azure 混合连接错误 : Assembly Microsoft. Web.Administration 版本 7.0.0.0 首先安装在全局程序集缓存中

docker - 连接到 dockerized Rethinkdb