这篇文章不是教你如何部署的,只是针对在Mac上会出现的问题做个小总结
IDE: Visual Studio for Mac
系统:13.5.1
CPU: M2 Pro
正常在Windows环境下,使用
docker-compose build
docker-compose up
就可以部署。
但是,Mac不行啊,老是出现各种的错误。
问了stackoverflow也好,百度也罢,没有很明确的回答(或许是我太菜了,根本不知道有这么个玩意)。
还有个"usersecerets"的错误。那要如何搞定这些问题?
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的东西,所以他也无能为力。
希望这边文章对大家是有用的。