怎样获取docker容器的环境变量
以下是一种跨平台,兼容windows,linux,max,docker,k8s的获取环境变量的方式:
apihost=Environment.GetEnvironmentVariable("ApiHost",RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? EnvironmentVariableTarget.Machine : EnvironmentVariableTarget.Process);
[附:设置上述环境变量]
1)直接用docker启动的项目.
使用docker run --env ApiHost=http://config.net.cn image:tag直接添加变量
示例:
root@ubuntu:/home/vickey/test_build# docker run --rm -it --env ApiHost=http://config.net.cn ubuntu:latest root@2bbe75e5d8c7:/# env |grep "TEST" TEST=2
2)k8s场景(不能用docker run命令启动的项目).
使用dockerfile的ARG和ENV添加变量:
ARG只在构建docker镜像时有效(dockerfile的RUN指令等),在镜像创建了并用该镜像启动容器后则无效(后面有例子验证)。但可以配合ENV指令使用使其在创建后的容器也可以生效。
ARG buildtime_variable=http://config.net.cn # if not set default_value buildtime_variable would be set ‘‘ ENV ApiHost=$buildtime_variable
在构建映像时,可以使用--build-arg buildtime_variable=other_value覆盖dockerfile里的变量值default_value
$ docker build --build-arg buildtime_variable=other_value --tag image:tag