如何将多个环境变量传递给 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-compose
或 kubernetes
)的部署,但是如果您想要启动单个容器使用命令行,您可以重复 -e
参数来传递多个环境变量。
docker run -it -e VAR_A=12 -e VAR_B=13 alpine sh
其中 alpine
容器映像是并且 sh
一个 shell 将在此容器中以交互方式启动 (-it
)。
在这个启动的容器中,您可以键入 set
并看到定义和设置了两个变量 VAR_A
和 VAR_B
。
您可以通过输入 exit
命令离开已启动的容器。
我是第一次与 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-compose
或 kubernetes
)的部署,但是如果您想要启动单个容器使用命令行,您可以重复 -e
参数来传递多个环境变量。
docker run -it -e VAR_A=12 -e VAR_B=13 alpine sh
其中 alpine
容器映像是并且 sh
一个 shell 将在此容器中以交互方式启动 (-it
)。
在这个启动的容器中,您可以键入 set
并看到定义和设置了两个变量 VAR_A
和 VAR_B
。
您可以通过输入 exit
命令离开已启动的容器。