.Net core使用Dockerfile中设置的ENV环境变量

之前开发的应用都是用的Windows平台发布,如若不是上次迁移云服务器上的应用到NAS上,大概还是不会接触Docker这个东西,但是用完这种发布方式我觉得已经回不去了,以后自己写的一些工具什么的可能会倾向于使用Docker发布了,后面有时间再研究研究Linux发布.net core应用,言归正传吧。

Dockerfile中变量的问题断断续续困扰了我一段时间了,按照以前的思维,我想当然的把Dockerfile当作了appsettings.json,想着是在Dockerfile定义一个参数,然后找到Dockerfile这个文件,去拿某一个定义好的值,因为最近比较忙也没专门的时间去看这个,今天快下班的时候忙中偷闲又搜了了一下,然后结合Docker上面的一些信息,突然恍然大悟。

其实Dockerfile定义的ENV变量是环境变量,我们设置完环境变量后,程序代码运行起来之后要从用户的环境变量中拿设置好的参数,在这里感谢这位大佬的文章提供的思路(https://www.cnblogs.com/shapman/p/13747762.html)

如何在Dockerfile定义环境变量:

如何在程序中读取环境变量:

//这里为什么要用三元运算符,上面大佬的文章很详细,我就不展开讲了,
//简短来说就是判断是否windows平台,因为windows和linux、mac获取环境变量的方法不一致
Environment.GetEnvironmentVariable("fileurl",RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? EnvironmentVariableTarget.Machine : EnvironmentVariableTarget.Process)

 

至此,困扰许久的问题得到了解决,感谢大佬提供的思路,当然我不知道这样的理解是否存在偏差,如果大家有更好的解释和理解,可以在评论中畅所欲言。

 

THE END