在macOS上使用docker-compose up遇到错误-
/ 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 建筑xyz 重新创建886c8806b528_dockercompose9508177338158005990_xyz_1 ... 正在重新创建57afcf6f0cb0_dockercompose9508177338158005990_xyz_1 ... 正在重新制作886c8806b528_dockercompose9508177338158155990_xyz_1 ...错误 错误:886c8806b528_dockercompose9508177338158005990_xyz_1无法启动服务xyz:b'安装被拒绝:\ r \ nOS X上不共享/ Microsoft / UserSecrets和/ASP.NET/Https\r\na路径,并且Docker不知道。可以从Docker-> Preferences ...-> File Sharing配置共享路径。\ 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 \ nOS X上未共享/ Microsoft / UserSecrets和/ASP.NET/Https\r\na路径,并且Docker不知道。可以从Docker-> Preferences ...-> File Sharing配置共享路径。\ r \ n有关更多信息,请参见https://docs.docker.com/docker-for-mac/osxfs/#namespaces。\ r \ n。' 错误:xyz无法启动服务xyz:b'Mounts被拒绝:\ r \ n路径/ Microsoft / UserSecrets和/ASP.NET/Https\r\na不与OS X共享,并且对于Docker是未知的。\ r \ n您可以从Docker-> Preferences ...-> File Sharing配置共享路径。\ r \ n有关更多信息,请参见https://docs.docker.com/docker-for-mac/osxfs/#namespaces。\ r \ n。' 错误:xyz无法启动服务xyz:b'Mounts被拒绝:\ r \ n路径/ Microsoft / UserSecrets和/ASP.NET/Https\r\na不与OS X共享,并且对于Docker是未知的。\ r \ n您可以从Docker-> Preferences ...-> File Sharing配置共享路径。\ r \ n有关更多信息,请参见https://docs.docker.com/docker-for-mac/osxfs/#namespaces。\ r \ n。' 在启动项目时遇到错误。
有关更多故障排除信息,请转到http://aka.ms/DockerToolsTroubleshooting(docker-compose)
答案 0 :(得分:1)
在Visual Studio for Mac中打开使用Visual Studio for Windows创建的项目时,会发生此问题。由于团队中的大多数开发人员都在使用Windows计算机,因此我想找到一个解决方案,使我可以在不修改项目配置的情况下运行项目。它需要很多时间和研究,但我终于使它起作用:
检查文件夹~/.aspnet/https
是否存在。如果是这样,请跳至步骤5 。
创建文件夹结构~./asp.net/https
。
运行以下命令以安装开发证书,该证书允许您通过HTTPS访问localhost
。更多详细信息here。
dotnet dev-certs https --trust
运行以下命令以导出开发证书。记下密码,以备日后使用:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/ANY_FILE_NAME.pfx -p PASSWORD
检查文件夹~/.microsoft/usersecrets
是否存在。如果这样做,则意味着您已经定义了一些用户密码,因此您可能可以跳到步骤7 ,否则,请继续下面的操作。
获取正在构建的Web应用程序的程序集的用户密钥ID。它通常位于一个名为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>"
}
}
}
}
在包含以下内容的Docker Compose配置文件位于解决方案中的同一文件夹中创建一个名为.env
的文件:
APPDATA=/Users/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 ~/.microsoft
创建一个指向〜/ Microsoft / UserSecrets to
〜/ .microsoft / usersecrets`的符号链接,如下所示:
ln -s ~/Microsoft/UserSecrets ~/.microsoft/usersecrets
如果正确执行所有步骤,则Docker Compose将能够在Mac环境中解析Windows路径,找到所需的证书密码并正确运行解决方案。
结果是,您只需要提交.gitignore
更改,以确保您的.env
文件不会由于无意间影响其他人的错误而不会包含在存储库中-无需对文件进行进一步更改项目。
参考文献:
答案 1 :(得分:0)
如@Leonardo Braga所述,当您在Visual Studio for Mac中打开使用Visual Studio for Windows创建的项目时,会发生此问题
我已按照以下步骤在Visual Studio Mac上解决此问题:
对我来说,这是解决上述问题的最简单方法。