【问题标题】:aspnet core 2.2 web app environment variables not changing in dockeraspnet core 2.2 web app环境变量在docker中没有改变
【发布时间】:2019-05-25 20:46:30
【问题描述】:

我有一个启用了 docker 支持的 ASP.NET core 2.2 Web 应用程序。我在这里创建了一个测试应用程序供审查here

我在 VS 中使用 Docker 在本地运行它。我想将环境变量/秘密添加到应用程序设置秘密中,以覆盖 appsettings.json 文件中的值。为了在本地执行此操作,我尝试更改以下值:

但是,对于这两种情况,当我将变量值附加到我的 docker 实例和 printenv 时,我发现 ASPNETCORE_ENVIRONMENT 的变量仍然显示为 Development。

我像这样附加到正在运行的容器:

docker exec -t -i 4c05 /bin/bash

我已搜索解决方案中的所有文件。我在解决方案中的任何地方都找不到 ASPNETCORE_ENVIRONMENT 设置为 Development。但是,不知何故,环境变量仍被设置为该值。

可能出了什么问题?我想改变那个变量。一旦工作,我真正想做的是将连接字符串秘密添加到环境变量,以便可以通过 appsettings.json 文件在本地使用它,或者如果 aspnetcore Web 应用程序在容器中运行,则可以通过 docker 秘密环境变量使用它。我想我已经让这段代码工作了,只是变量没有按预期部署到正在运行的容器中。

我的 VS 版本是:

谢谢

【问题讨论】:

  • 你能告诉我你是如何寻找环境变量的吗?我看到你正在运行 bash,但这并没有告诉我你在理论上检查了 evnrionment 变量做了什么。您的 dockerfile 肯定会设置它(尽管有拼写错误/拼写错误)
  • 嗨,丹,我正在运行这个:docker exec -t -i 4c83 /bin/bash。连接后,我运行 printenv。当然 4c83 是容器 id
  • 我现在只是在尝试使用 docker-compose。我已在 Web 项目中添加了 Orchestrator 支持
  • 你对 env 的使用对我来说似乎是正确的,fwiw。
  • 我下载并运行了您的代码(在 Mac 上)并从 printenv:dropbox.com/s/1fsjx5650nt5sfo/… 打印了正确的环境变量 - 一定是 VS 正在做的事情?

标签: docker asp.net-core asp.net-core-mvc


【解决方案1】:

嗯——似乎 VS 中的 DockerFile 支持存在问题。但是,当我使用编排支持时,使用 docker-compose,功能按预期工作,所以我自己回答了这个问题:-)

【讨论】:

    猜你喜欢
    • 2021-05-16
    • 2021-02-15
    • 1970-01-01
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 1970-01-01
    相关资源
    最近更新 更多