加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:37:39 所属栏目:安全 来源:网络整理
导读:我正在尝试转换一个服务(IdentityServer 4 v2),它是一个.Net Core 2.0应用程序,可以在Docker for Windows上运行.这只是在开发工作站上. 我为现有的Net Core 2.0服务做了标准的Visual Studio 2017“添加Docker支持”.该服务启动正常,但由于这些问题而失败:

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

>该服务正在寻找安装在本地主机上的证书.在docker中运行它不会看到此证书.
>该服务使用主机etc / Hosts文件中的DNS来查找我们的数据库服务器.在Docker上运行的服务看不到主机DNS.

我试图将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

引用的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-on-windows-10?newreg=0d065d6c37214be4bd1f02a45e1248ba

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

var cert = X509.LocalMachine.CertificateAuthority.Thumbprint
.Find(settings.CertificateThumbprint).FirstOrDefault();
最佳答案
使用docker的关键是将容器资源与其他容器分开并托管自身.从应用程序POV,您调用的LocalMachine不是您的主机,而是“容器”,因此一切都按预期工作.

我假设你不想把crt文件放在图像里面,这是非常明智的.

要使其工作,请将crt文件放在某个文件夹中,然后使用docker卷将该dir挂载到容器中,或者如果在swarm中使用docker,请使用docker secrets.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读