提问者:小点点

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


我是第一次和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容器中配置这些环境变量。我已经看到您可以在run命令中使用-e来完成这一操作,但这样传递的变量太多了。


共2个答案

匿名用户

有很多方法。看看compose中的环境变量。

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

Compose file
Shell environment variables
Environment file
Dockerfile

因此问答还提供了一些关于在运行容器中设置环境变量的建议。

匿名用户

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

Docker run-it-e var_a=12-e var_b=13 alpine SH

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

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

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