使用docker-compose up on macOS获得以下错误 -
/ Applications / Visual Studio.app/Contents/Resources/lib/monodevelop/AddIns/docker/MonoDevelop.Docker/MSbuild/Sdks/Microsoft.Docker.Sdk/build/Microsoft.VisualStudio.Docker.Compose.targets(5,5) :错误:未设置APPDATA变量。默认为空字符串。删除dockercompose9508177338158005990_xyz_1删除dockercompose9508177338158005990_xyz_1大厦某某大厦XYZ重塑886c8806b528_dockercompose9508177338158005990_xyz_1 ......重塑57afcf6f0cb0_dockercompose9508177338158005990_xyz_1 ......重塑886c8806b528_dockercompose9508177338158005990_xyz_1 ...错误错误:886c8806b528_dockercompose9508177338158005990_xyz_1无法启动服务XYZ:b'Mounts否认:\ r \ n此路径/微软/ UserSecrets和/ ASP .NET / Https \ r \ n不会从OS X共享,并且Docker不知道。\ r \ n您可以从Docker配置共享路径 - >首选项... - >文件共享。\ r \ n请参阅https://docs.docker.com/docker-for-mac/osxfs/#namespaces以获取更多信息。 \ r \ N“。正在重新创建57afcf6f0cb0_dockercompose9508177338158005990_xyz_1 ...错误错误:对于57afcf6f0cb0_dockercompose9508177338158005990_xyz_1无法启动服务xyz:b'Mounts被拒绝:\ r \ n路径/ Microsoft / UserSecrets和/ASP.NET/Https \ rnn不从OS X共享且不知道Docker。\ r \ n您可以从Docker配置共享路径 - >首选项... - >文件共享。\ r \ n请参阅https://docs.docker.com/docker-for-mac/osxfs/#namespaces以获取更多信息。\ r \ n。错误:对于xyz无法启动服务xyz:b'Mounts被拒绝:\ r \ n路径/ Microsoft / UserSecrets和/ASP.NET/Https \ rnn不从OS X共享,并且Docker不知道。\ r \ n您是可以从Docker配置共享路径 - >首选项... - >文件共享。\ r \ n请参阅https://docs.docker.com/docker-for-mac/osxfs/#namespaces以获取更多信息。\ r \ n。'错误:对于xyz无法启动服务xyz:b'Mounts被拒绝:\ r \ n路径/ Microsoft / UserSecrets和/ASP.NET/Https \ rnn不从OS X共享,并且Docker不知道。\ r \ n您是可以从Docker配置共享路径 - >首选项... - >文件共享。\ r \ n请参阅https://docs.docker.com/docker-for-mac/osxfs/#namespaces以获取更多信息。\ r \ n。'在启动项目时遇到错误..
有关更多故障排除信息,请访问http://aka.ms/DockerToolsTroubleshooting(docker-compose)
在Visual Studio for Mac中打开使用Visual Studio for Windows创建的项目时,会发生此问题。由于我团队中的大多数开发人员都在使用Windows计算机,因此我想找到一种解决方案,允许我在不修改项目配置的情况下运行项目。它需要大量的时间和研究,但我终于使它工作:
~/.aspnet/https
是否存在。如果是,请跳到步骤5。~./asp.net/https
。localhost
的开发证书。更多细节here。
dotnet dev-certs https --trust
dotnet dev-certs https -ep ${HOME}/.aspnet/https/FILE_NAME.pfx -p PASSWORD
~/.microsoft/usersecrets
是否存在。如果是,则表示您已经定义了一些用户秘密,因此您可以跳到步骤7,否则,继续下面。Your.Project.Package.Name.Assembly.cs
的文件中。您还可以在项目文件夹中搜索UserSecrets.UserSecretsIdAttribute("
并获取GUID。
如果您使用Docker Compose同时部署多个Web应用程序,则可能需要对解决方案中的多个程序集重复此步骤。~./microsoft/usersecrets
内部,创建一个文件夹,其中包含您在步骤6中获得的GUID,假设一个文件夹不存在。如果是这样,您只需使用下一步的内容更新其中的文件secrets.json
。secrets.json
并插入以下内容:
{
"Kestrel": {
"Certificates": {
"Default": {
"Path": "/root/.aspnet/https/<FILE_NAME from Step 4>.pfx",
"Password": "<PASSWORD from Step 4>"
}
}
}
}
.env
的文件,其中包含以下内容:
APPDATA = /用户/ YOUR_USER_NAME
当Visual Studio运行该工具时,Docker Compose将自动拾取此文件。.env
添加到.gitignore
,因此不会错误地提交您的更改。这将确保具有不同环境的其他开发人员也可以使用此方法。~/ASP.NET
指向.aspnet
,如下所示:
ln -s~ / .aspnet~ / ASP.NET~/ASP.NET/Https
指向~/.aspnet/https
,如下所示:
ln -s~ / ASP.NET / Https~ / .aspnet / https~/Microsoft
指向~/.microsoft
,如下所示:
ln -s~ / Microsoft~ / .microsoftto
~ / .microsoft / usersecrets`的符号链接,如下所示:
ln -s~ / Microsoft / UserSecrets~ / .microsoft / usersecrets如果您正确执行所有步骤,Docker Compose将能够解析Mac环境中的Windows路径,找到所需的证书密码并正确运行解决方案。
结果是你只需要提交你的.gitignore
更改,以确保你的.env
文件没有被无意中影响他人而被包含在回购中 - 项目不需要进一步的更改。
参考文献: