【问题标题】:How to pass multiple environment variables to a docker container?如何将多个环境变量传递给 docker 容器?
【发布时间】:2021-06-21 07:18:31
【问题描述】:

我是第一次使用 docker,我正在努力解决所有问题。

在我正在使用的这个项目中,我们广泛使用 Windows 环境变量来在我们的启动文件中使用。为了将它们放入我们的配置中,我们使用 AddEnvironmentVariables(string prefix) 方法,如下所示:

  public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
        WebHost.CreateDefaultBuilder(args)
            .ConfigureAppConfiguration(builder =>
            {
                builder.AddEnvironmentVariables(prefix: "MICROSVC_")
                .AddJsonFile("appsettings.json");
               
            })
                .UseStartup<Startup>();

在 localhost 和 Azure 中这没有问题,因为我们已将它们添加到这些环境中。但看在上帝的份上,我无法弄清楚如何在我的 docker 容器中配置这些环境变量。我已经看到您可以在运行命令中使用 -e 来执行此操作,但是这样传递的变量太多了。

【问题讨论】:

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


    【解决方案1】:

    有很多方法。看看Environment variables in Compose

    这里有四个来​​自这个来源。

    Compose file
    Shell environment variables
    Environment file
    Dockerfile
    

    This SO Q&A 还提供了一些在运行容器中设置环境变量的建议。

    【讨论】:

      【解决方案2】:

      正如 Kit 所回答的,存在许多设置 Docker 容器部署的方法(例如 docker-composekubernetes),但是如果您想使用命令行启动单个容器,您可以重复 -e参数传递多个环境变量。

      docker run -it -e VAR_A=12 -e VAR_B=13 alpine sh

      其中alpine 是容器映像,sh 是在此容器中以交互方式启动的外壳 (-it)。

      在这个已启动的容器中,您可以键入 set 并看到两个变量 VAR_AVAR_B 已定义和设置。

      您可以通过键入exit 命令离开已启动的容器。

      【讨论】:

        猜你喜欢
        • 2015-08-10
        • 2015-09-18
        • 2019-04-10
        • 2022-01-16
        • 2021-06-07
        • 2020-02-23
        • 2016-12-08
        • 2021-06-25
        • 2017-09-18
        相关资源
        最近更新 更多