MacOS 在Docker上部署ASP .NET API所遇到的问题

这篇文章不是教你如何部署的,只是针对在Mac上会出现的问题做个小总结

IDE: Visual Studio for Mac
系统:13.5.1
CPU: M2 Pro

正常在Windows环境下,使用

docker-compose build
docker-compose up

就可以部署。
但是,Mac不行啊,老是出现各种的错误。

问了stackoverflow也好,百度也罢,没有很明确的回答(或许是我太菜了,根本不知道有这么个玩意)。

还有个"usersecerets"的错误。那要如何搞定这些问题?

usersecrets的错误

usersecrets
右键目标项目,找到“Manage User Secrets”的选项,点它。


按道理来说VS for Mac是不会给你自动生成的你的password的,这时候需要你到Finder去 cmd+shift+g 输入 /Users/${username}/.microsoft/usersecrets/ 找到刚刚生成的文件夹,将文件夹的全名复制,点开文件夹内的json文件,或者VS中你还打开 secrets.json 的话。将下面的字符输入进去

{
    "Kestrel:Certificates:Development:Password": "${foldername}"
}

${foldername} 是指刚刚复制的文件夹名, ${username}是指你的用户名,请自行替换掉两者。

Certificate的错误

Unhandled exception. System.InvalidOperationException: Unable to configure HTTPS endpoint. No server certificate was specified, and the default developer certificate could not be found or is out of date.

To generate a developer certificate run 'dotnet dev-certs https'. To trust the certificate (Windows and macOS only) run 'dotnet dev-certs https --trust'.

For more information on configuring HTTPS see https://go.microsoft.com/fwlink/?linkid=848054.

at Microsoft.AspNetCore.Hosting.ListenOptionsHttpsExtensions.UseHttps(ListenOptions listenOptions, Action`1 configureOptions)

正常来说,证书都是自己生成的,问题都是没有的。但是不正常来说的话… VS for Mac 它会抽风!
这时候,就要我们手动添加了。

Finder 中 cmd+shift+g 去到
/Users/${username}/.aspnet

看看里面的文件夹,有没有https(这个因每个人的docker-compose而异,后面会讲到)。

如果有,双击它,如果是不知道密码的证书,那就算了,因为

'dotnet dev-certs https'
'dotnet dev-certs https --trust'

这两条指令基本上是搞不定的。

这时候就要创建自己的证书

dotnet dev-certs https -ep ${HOME}/.aspnet/https/aspnetapp.pfx -p <CREDENTIAL_PLACEHOLDER>
dotnet dev-certs https --trust

创建一个你自己的证书先,然后信任他,<CREDENTIAL_PLACEHOLDER>这个是你自己创的密码,需要记住,如果还是不信任的话,你需要手动加入到keychain_access 中去: 双击证书,先是输入设备密码,再输入证书密码。

docker-compose 的配置

在docker-compose.override.yml中

volumes:
      - ${HOME}/.aspnet/https:/root/.aspnet/https:ro
      - ${HOME}/.microsoft/usersecrets:/root/.microsoft/usersecrets:ro

确保这些是准确无误的,docker-compose内的配置都是你需要的。基本上就大工告捷了!

结语

嗯。。。这个问题纠结了我一周,终于搞定了。 问了几十年开发经验的人,他也很懵,估计是用windows 完全不知道mac的东西,所以他也无能为力。
希望这边文章对大家是有用的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值