Visual Studio中的ASP.Net核心自定义Docker卷安装

Aar*_*ack 5 visual-studio docker asp.net-core

最初,我使用的是适用于Docker的Visual Studio 2017工具,因为当将Docker支持添加到ASP.NET时,这是Visual Studio早期版本中的默认设置。

最近,我升级到了Visual Studio 2017 15.8.0预览版2,我注意到有一种使用进行docker构建的全新方法launchSettings.json

旧方法有一个特殊的*.dcprojwhos项目的SDK属性指向<Project Sdk="Microsoft.NET.Sdk.Web">。在此项目中,有一个docker-compose.yml和a 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
Run Code Online (Sandbox Code Playgroud)

这很棒,因为它允许我在调试过程中轻松指向容器中没有的配置文件。

现在,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}"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我还要说,我已经在寻找这个问题的解决方法好几个小时了,但是我至今仍未找到有关该主题的任何信息。

小智 10

有两个MSBuild属性可用于增强Docker映像的构建/运行:

  • DockerfileBuildArguments:其他参数传递给Docker build命令。
  • DockerfileRunArguments:其他参数传递给Docker run命令。

例:

<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <DockerfileRunArguments>-v "C:\HostFolder:/ContainerFolder:ro"</DockerfileRunArguments> </PropertyGroup> </Project>