use*_*524 3 .net docker docker-compose docker-for-mac
在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重新创建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 \ nare不与OS X共享,Docker不知道。https://docs.docker.com/docker-for-mac/osxfs/#namespaces了解更多信息。\ r \ n。正在重新创建57afcf6f0cb0_dockercompose9508177338158158005990_xyz_1 ...错误ERROR:57afcf6f0cb0_dockercompose9508177338158155990_xyz_1无法启动服务xyz:b'安装被拒绝:\ r \ n不知道/ Microsoft / UserSecrets和/ASP.NET/Https的路径/ Microsoft / UserSecrets和/ r \ n不共享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配置共享路径。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)
当您在Visual Studio for Mac中打开使用Visual Studio for Windows创建的项目时,会发生此问题。由于团队中的大多数开发人员都在使用Windows计算机,因此我想找到一个解决方案,使我可以在不修改项目配置的情况下运行该项目。这需要很多时间和研究,但是我终于使它起作用了:
检查文件夹是否~/.aspnet/https存在。如果是,请跳至步骤5。
创建文件夹结构~./asp.net/https。
运行以下命令以安装允许您localhost通过HTTPS 访问的开发证书。更多细节在这里。
dotnet dev-certs https --trust
Run Code Online (Sandbox Code Playgroud)运行以下命令以导出开发证书。记下密码,以后将需要它:
dotnet dev-certs https -ep ${HOME}/.aspnet/https/FILE_NAME.pfx -p PASSWORD
Run Code Online (Sandbox Code Playgroud)检查文件夹是否~/.microsoft/usersecrets存在。如果是这样,则意味着您已经定义了一些用户密码,因此您可以跳至步骤7,否则,请继续下面的步骤。
获取您正在构建的Web应用程序的程序集的用户密钥ID。通常位于名为like的文件中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>"
}
}
}
}
Run Code Online (Sandbox Code Playgroud).env在解决方案内部的Docker Compose配置文件所在的文件夹中创建一个名称为以下内容的文件:
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〜/ .aspnet / https〜/ ASP.NET / Https
创建符号链接点~/Microsoft到~/.microsoft如下:
ln -s〜/ .microsoft〜/ Microsoft
创建一个指向〜/ Microsoft / UserSecrets〜to/ .microsoft / usersecrets` 的符号链接,如下所示:
ln -s〜/ .microsoft / usersecrets〜/ Microsoft / UserSecrets
如果正确执行所有步骤,则Docker Compose将能够在Mac环境中解析Windows路径,找到所需的证书密码并正确运行解决方案。
结果是您只需要提交.gitignore更改,以确保您的.env文件不会被误认为会无意中影响其他人的文件存储在仓库中,因此无需对该项目进行进一步更改。
在2019年8月4日进行编辑:一些符号链接创建参数的顺序相反。非常感谢@BRBdot指出了这一点。
参考文献:
| 归档时间: |
|
| 查看次数: |
576 次 |
| 最近记录: |