我是第一次和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来完成这一操作,但这样传递的变量太多了。
有很多方法。看看compose中的环境变量。
这里有四个来自这个来源。
Compose file
Shell environment variables
Environment file
Dockerfile
因此问答还提供了一些关于在运行容器中设置环境变量的建议。
正如Kit所回答的,有许多方法可以设置Docker容器的部署(如docker-compose
或kubernetes
),但是,如果您希望使用命令行启动单个容器,则可以重复-e
参数来传递多个环境变量。
Docker run-it-e var_a=12-e var_b=13 alpine SH
其中alpine
是容器映像,sh
是要在该容器中以交互方式(-it
)启动的shell。
在这个启动的容器中,您可以键入set
并看到定义和设置了两个变量var_a
和var_b
。
您可以通过键入exit
命令离开已启动的容器。