swa*_*nee 8 docker .net-core docker-compose identityserver4
我正在尝试转换一个服务(IdentityServer 4 v2),它是一个.Net Core 2.0应用程序,可以在Docker for Windows上运行.这只是在开发工作站上.我为现有的Net Core 2.0服务做了标准的Visual Studio 2017"添加Docker支持".该服务启动正常,但由于这些问题而失败:
我试图将docker compose中的network_mode设置为"host",但是无法构建.建立这样一个环境的建议方法是什么?
使用docker compose设置运行时,默认的compose和配置非常简单:
version: '3'
services:
identity.server:
image: identity.server
ports:
- "8100:8100"
build:
context: ./src/Identity.Server
dockerfile: Dockerfile
Run Code Online (Sandbox Code Playgroud)
引用的dockerfile:
FROM microsoft/dotnet:2.0-runtime
ARG source
WORKDIR /app
COPY ${source:-obj/Docker/publish} .
ENTRYPOINT ["dotnet", "Identity.Server.dll"]
Run Code Online (Sandbox Code Playgroud)
我已经阅读了以下答案,但它似乎不适用于.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();
Run Code Online (Sandbox Code Playgroud)
使用 docker 的全部目的是将容器资源与其他容器和主机本身分开。从应用程序 POV 来看,您调用的 LocalMachine 不是您的主机,而是“容器”,因此一切都按预期运行。
我假设您不想将 crt 文件放入图像中,这是非常明智的。
要使其正常工作,请将 crt 文件放在某个文件夹中,然后使用 docker 卷将该目录安装到容器中,或者如果您在 swarm 中使用 docker,请使用 docker 密钥。
| 归档时间: |
|
| 查看次数: |
1773 次 |
| 最近记录: |