VS2017:将环境变量添加到 docker 容器以进行调试

Que*_*ing 4 docker .net-core visual-studio-2017

我使用 VS2017(右键单击项目 > 添加 > Docker 支持)为我的项目添加了 docker 支持,它为我创建了一个 Dockerfile 并更新了 launchsettings.json。

我有以下launchsettings.json

"Docker": {
  "commandName": "Docker",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://localhost:{ServicePort}",
  "environmentVariables": {
    "TEST": "Test value"
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我执行 a 时,docker inspect我看不到容器上的环境变量。

由于我无权访问docker-compose文件,在调试时注入环境变量的建议方法是什么?

Leo*_*Leo 8

我一直在寻找相同的答案,最终找到了这个博客:https : //briankeating.net/post/VS2019-Docker-ASPnet-Core-Evnrionment-Variables

涉及2个步骤:

  1. 在您的项目中创建一个新的文本文件,例如:Dockerfile.env. 在文件中,您可以每行添加一个环境变量,如下所示:DEMO=VALUE

  2. 编辑您的项目.csproj文件,并在PropertyGroup其中添加一行,其中也包含TargetFramework带有标记的标记DockerfileRunEnvironmentFiles

这看起来类似于:

<Project Sdk="Microsoft.NET.Sdk.Web">
    <PropertyGroup>
        <TargetFramework>netcoreapp2.2</TargetFramework>
        <AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
        <DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
        <LangVersion>latest</LangVersion>
        <ApplicationIcon />
        <OutputType>Exe</OutputType>
        <StartupObject />
        <DockerfileRunEnvironmentFiles>Dockerfile.env</DockerfileRunEnvironmentFiles>
    </PropertyGroup>
</Project Sdk="Microsoft.NET.Sdk.Web">
Run Code Online (Sandbox Code Playgroud)

在此之后,您可以在调试期间使用 .env 文件中定义的环境变量。


Max*_*hom 5

在 中launchSettings.json,您必须在配置文件下添加一个包含以下内容的部分:

"Docker": {
      "commandName": "Docker",
      "launchBrowser": true,
      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/",
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "publishAllPorts": true,
      "useSSL": true
    }
Run Code Online (Sandbox Code Playgroud)

如果您添加了 docker 支持,您应该已经看到一个名为 的条目docker。只需添加你的变量environmentVariables

我的完整launchSettings.json

{
  "iisSettings": {
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": {
      "applicationUrl": "http://localhost:52330",
      "sslPort": 44374
    }
  },
  "$schema": "http://json.schemastore.org/launchsettings.json",
  "profiles": {
    "IIS Express": {
      "commandName": "IISExpress",
      "launchBrowser": true,
      "environmentVariables": {        
        "ASPNETCORE_ENVIRONMENT": "Development",        
      }
    },
    "DataApi": {
      "commandName": "Project",
      "launchBrowser": true,
      "environmentVariables": {
        "ASPNETCORE_ENVIRONMENT": "Development"
      },
      "applicationUrl": "https://localhost:5001;http://localhost:5000"
    },
    "Docker": {
      "commandName": "Docker",
      "launchBrowser": true,
      "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/",
      "environmentVariables": {        
        "ASPNETCORE_ENVIRONMENT": "Development",        
      },
      "publishAllPorts": true,
      "useSSL": true
    }
  }
}
Run Code Online (Sandbox Code Playgroud)