在很多天之前,我一直被容器的唯一性所困扰,比如雪花算法需要一个机器号,但是部署在不同容器内的相同服务,怎么获取一个唯一号呢?难道我们每次都给容器赋予不同的环境变量吗?这对于运维来说,感觉太麻烦了吧。
而怎么检测我是部署在容器,或者部署在windows上呢,感觉困难重重?
环境变量
.net core 很好的支持获取环境变量,直接利用System.Environment,就可以获取很多信息,当然在asp.net core下有IHostingEnvironment 可注入的服务支持,利用起来更是爽利无比。不管是docker,亦或者是直接部署在supervisor下的监控控制台,都可以非常方便的设置环境变量,这里仅仅拿docker举例说明。
在Dockerfile中可以使用ENV命令直接指定环境变量,格式如下:
ENV key value
ENV key1=value1 key2=value2
#举个例子吧
ENV ASPNETCORE_ENVIRONMENT Test
ENV VERSION=1.0 DEBUG=on \
NAME="Happy Feet"
运行时也可以设定环境变量
docker run --env VARIABLE=VALUE image:tag