繁体   English   中英

.env文件变量在运行期间不存在:如何检查是否已加载?

[英].env file variables not present during run: How to check if loaded?

编辑:这已解决。 答案是,在Docker运行命令中,选项必须出现在映像名称之前。 因此只需将--env-file settings.env移到映像名称之前即可解决此问题。

我试图在Windows 10上运行的Linux Docker容器中运行C#asp.net核心Web服务。

在调试过程中,我能够加载settings.env文件,但是运行容器时似乎无法加载它。

settings.env文件包含以下内容:

#MerConnection data
Server-James=172.25.134.49,1433
Database-James=Store
DBUser-James=user
DBPassword-James=password
ConnectionString-James=

我运行容器的命令如下:

docker run -p 40012:80 apilive:latest --env-file 'C:\Applications\VB2017Apps\Mer .net\Mer\settings.env' -Encoding ascii

我这样称呼环境变量:

        if (Environment.GetEnvironmentVariable("ConnectionString-" + tenantId) == "")
        {
            string server = Environment.GetEnvironmentVariable("Server-" + tenantId);
            string db = Environment.GetEnvironmentVariable("Database-" + tenantId);
            string user = Environment.GetEnvironmentVariable("DBUser-" + tenantId);
            string password = Environment.GetEnvironmentVariable("DBPassword-" + tenantId);

            Environment.SetEnvironmentVariable("ConnectionString-" + tenantId, "Server=" + server + ";Database=" + db + ";User Id=" + user + ";Password=" + password + ";MultipleActiveResultSets=true");
        }


        return Environment.GetEnvironmentVariable("ConnectionString-" + tenantId);

我相信它没有加载,因为在调用Web服务时,它报告它无法创建有效的连接字符串,这是我期望的,如果Environment变量为null。

不幸的是,在谷歌搜索并尝试对docker run命令进行各种编辑(例如,带/不带引号和等号等)后,我无法加载它,也没有给我任何问题的迹象,因此,解决这个问题的任何帮助将不胜感激。

要检查是否加载了环境变量,可以使用docker inspect:

docker inspect --format '{{ (index .Config.Env) }}' <container_id>

这将打印所有环境变量的列表。

我在Windows环境中不使用Docker,但是您可能需要转义'\\'和空格。 同样,在环境变量中使用“-”似乎值得怀疑。

经过更多搜索并实现了上述想法之后,我发现我的问题与以下问题重复: 如何通过运行env文件的docker在环境变量中传递?

这个答案也解决了这一问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM