【问题标题】:Can not pass (or read) environment variables from docker + .net core无法从 docker + .net core 传递(或读取)环境变量
【发布时间】:2021-02-21 15:13:34
【问题描述】:

.Net Core 5.0.103

docker 版本:20.10.2,构建 2291f61 (Ubuntu)

我创建 docker 映像 + 尝试从命令行获取环境变量。 所以:

docker run -it --rm robust_tapir -e ADDRESS='127.0.0.1' -e Port='5000' -e Schema='http'

结果是:

[15:08:57 ERR] Hello World!
[15:08:57 ERR] Address:
[15:08:57 ERR] Port:
[15:08:57 ERR] Schema:

在我的 .net 核心控制台应用程序中:

            Logger = CreateLogger();
            Logger.Error("Hello World!");

            await Task.Delay(5);

            Address = Environment.GetEnvironmentVariable("ADDRESS");
            Port = Environment.GetEnvironmentVariable("Port");
            Schema = Environment.GetEnvironmentVariable("Schema");
       
#if DEBUG
            Address = "127.0.0.1";
            Port = "5000";
            Schema = "http";
#endif
            Logger.Error($"{nameof(Address)}:{Address}");
            Logger.Error($"{nameof(Port)}:{Port}");
            Logger.Error($"{nameof(Schema)}:{Schema}");

            while (string.IsNullOrEmpty(Address))
            {
                await Task.Delay(1000);
            }
                                           

那么,我做错了什么?错误地传入容器或从 .net 核心读取错误?

【问题讨论】:

  • 尝试删除 127.0.0.1、5000 和 http 周围的单引号。

标签: c# docker .net-core environment-variables


【解决方案1】:

引号环绕整个环境。论据:

docker run -it --rm robust_tapir -e "ADDRESS=127.0.0.1" -e "Port=5000" -e "Schema=http"

【讨论】:

    猜你喜欢
    • 2019-06-02
    • 2018-09-18
    • 2021-09-30
    • 1970-01-01
    • 2021-06-25
    • 2019-01-21
    • 1970-01-01
    • 2019-11-21
    • 2018-12-02
    相关资源
    最近更新 更多