visual-studio - Visual Studio 中的 ASP.Net 核心自定义 docker 卷挂载
问题描述
最初我使用的是Visual Studio 2017 Tools for Docker,因为这是在早期版本的 Visual Studio 中将 docker 支持添加到 ASP.NET 时的默认设置。
最近我升级到 Visual Studio 2017 15.8.0 Preview 2,我注意到有一种全新的方式来使用launchSettings.json
.
旧方式有一个特殊*.dcproj
的 whos 项目的 SDK 属性指向<Project Sdk="Microsoft.NET.Sdk.Web">
. 在这个项目中,有一个docker-compose.yml
和一个docker-compose.override.yml
指向我的 ASP.Net 的Dockerfile
. 这非常灵活,让我可以进行大量自定义,例如添加卷安装,如下所示。
docker-compose.override.yml:
version: '3.5'
services:
sample.container:
volumes:
- type: bind
source: C:\config
target: /config
read_only: true
volume:
nocopy: true
这很棒,因为它允许我在调试期间轻松指向不在容器中的配置文件。
现在使用 Visual Studio 中的新 docker 工具,launchSettings.json
并且<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="0.2.1686908" />
在*.csproj
文件中不再使用 compose 文件,它Dockerfile
直接启动。下面是我的副本launchSettings.json
。
我真的希望有人能告诉我如何以这种新方式将自定义卷挂载添加到launchSettings.json
文件中,请参阅Docker
下面的部分。
launchSettings.json:
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "http://localhost:55836",
"sslPort": 44354
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"WebApplication1": {
"commandName": "Project",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"applicationUrl": "https://localhost:5001;http://localhost:5000"
},
"Docker": {
"commandName": "Docker",
"launchBrowser": true,
"launchUrl": "{Scheme}://localhost:{ServicePort}"
}
}
}
我还想说我已经寻找这个问题的解决方案几个小时了,但我无法找到有关该主题的任何信息。
解决方案
有几个 MSBuild 属性可用于增强 Docker 映像的构建/运行:
DockerfileBuildArguments
:传递给 Docker 构建命令的附加参数。DockerfileRunArguments
:传递给 Docker 运行命令的附加参数。
例子:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<DockerfileRunArguments>-v "C:\HostFolder:/ContainerFolder:ro"</DockerfileRunArguments>
</PropertyGroup>
</Project>
推荐阅读
- docker - 本地计算机中的 Docker 映像已被 Kubernetes 垃圾收集删除
- web-services - SuiteTalk - 创建 ItemReceipt 的问题
- android - 有谁知道如何在 API 级别 29 或以上应用“isAdded”?
- php - Lumen/Laravel - 为什么数据会自动插入联结表?
- c# - 列与引用列的长度或比例不同
- robotframework - “After Test Suite”的设置是什么
- ios - 在 Strava 身份验证上未调用 ASWebAuthenticationSession completionHandler
- vba - 将装配中的所有零件保存为具有自定义属性的 STEP。如何解决运行时错误 91?
- laravel - 如何使用 VueJS 增强现有的 Laravel 项目?
- python - Tensorflow 中使用 LSTM 的时间序列预测模型预测一个常数