在Docker中运行.Net Core 2.0上的IdentityServer4 – 访问主机资源

我试图将一个.Net Core 2.0应用程序的服务(IdentityServer 4 v2)转换为在Docker for Windows上运行。 这只在开发工作站上。 我做了标准的Visual Studio 2017“添加Docker支持”到现有的Net Core 2.0服务。 服务启动正常,但由于这些问题而失败:

  1. 该服务正在寻找安装在本地主机上的证书。 在Docker中运行它没有看到这个证书。
  2. 该服务使用主机的etc / host文件来查找我们的数据库服务器的DNS。 在Docker上运行的服务没有看到主机的DNS。

我试图将docker中的network_mode设置为“host”,但无法构build。 build立这样一个环境的build议方式是什么?

运行时是使用docker撰写的,默认的撰写和configuration非常简单:

version: '3' services: identity.server: image: identity.server ports: - "8100:8100" build: context: ./src/Identity.Server dockerfile: Dockerfile 

引用的dockerfile:

 FROM microsoft/dotnet:2.0-runtime ARG source WORKDIR /app COPY ${source:-obj/Docker/publish} . ENTRYPOINT ["dotnet", "Identity.Server.dll"] 

我已经阅读了下面的答案,但它似乎不工作在.net本身: https : //devops.stackexchange.com/questions/1501/configure-docker-to-use-ssl-for-a-private -registry上-窗口10?newreg = 0d065d6c37214be4bd1f02a45e1248ba

我们正在像这样访问证书,它只是返回null。 如果服务在Docker之外运行,会发现它。

 var cert = X509.LocalMachine.CertificateAuthority.Thumbprint .Find(settings.CertificateThumbprint).FirstOrDefault();