【问题标题】:VS2017: Adding environment variables to docker container for debuggingVS2017:为docker容器添加环境变量进行调试
【发布时间】:2019-03-26 17:56:28
【问题描述】:

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

我有以下launchsettings.json

"Docker": {
  "commandName": "Docker",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://localhost:{ServicePort}",
  "environmentVariables": {
    "TEST": "Test value"
  }
}

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

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

【问题讨论】:

    标签: docker .net-core visual-studio-2017


    【解决方案1】:

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

    涉及两个步骤:

    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">
    

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

    【讨论】:

    • 但这会强制将该文件添加到 git repo?
    • 似乎不起作用(不再?)-使用 vs 2019 16.7。
    【解决方案2】:

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

    "Docker": {
          "commandName": "Docker",
          "launchBrowser": true,
          "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}/",
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development"
          },
          "publishAllPorts": true,
          "useSSL": true
        }
    

    如果您添加了 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
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 2021-04-06
      • 1970-01-01
      • 1970-01-01
      • 2020-10-22
      • 2020-04-04
      • 2020-01-28
      • 2017-12-26
      • 2016-05-30
      相关资源
      最近更新 更多