我成功在 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 Windows在VM中运行> 使用Hyper-V。
恐怕解决方案是使用 microsoft/azure-storage-emulator开发时创建图像并将您的 API 指向它。
更新
您还可以尝试使用 host.docker.internal
而不是 127.0.0.1
作为连接字符串中的主机(这也可能让您使用运行的模拟器在您的主机上而不是容器上)。
希望对你有帮助!
关于azure - 无法从同一计算机上的 docker 容器连接到 Azure 存储模拟器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53843918/