如何将多个环境变量传递给 docker 容器?

How to pass multiple environment variables to a docker container?

我是第一次与 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>();

在本地主机和 Azure 中,这没有问题,因为我们已将它们添加到这些环境中。但天哪,我无法弄清楚如何在我的 docker 容器中配置这些环境变量。我已经看到您可以在 运行 命令中使用 -e 来完成它,但是这样传递的变量太多了。

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

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

Compose file
Shell environment variables
Environment file
Dockerfile

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

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

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

其中 alpine 容器映像是并且 sh 一个 shell 将在此容器中以交互方式启动 (-it)。

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

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