Переменные файла .env отсутствуют во время выполнения: Как проверить, загружен ли? - PullRequest
0 голосов
/ 04 февраля 2019

РЕДАКТИРОВАТЬ: Это решено.Ответ состоял в том, что в команде запуска Docker параметры должны появляться перед именем образа;так что просто переместив --env-файл settings.env до того, как имя образа немедленно решит эту проблему.

Я пытаюсь запустить базовый веб-сервис C # asp.net в контейнере Linux Docker, работающем в Windows 10.

Во время отладки я могу загрузить файл 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);

Я считаю, что он не загружается, потому что навызывая веб-сервис, он сообщает, что не может создать допустимую строку подключения, чего я и ожидал бы, если бы переменные окружения были нулевыми.

К сожалению, после поиска в Google и попыток различных изменений команды запуска docker, например, с помощью/ без кавычек и знака равенства и т. д. Я не могу загрузить его и не дать никаких указаний на проблему, поэтому любая помощь в решении этой проблемы будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

После гораздо большего поиска и реализации вышеуказанных идей я обнаружил, что мои вопросы были дубликатом следующего: Как пройти через переменные окружения в Docker, запускаемом через файл env?

Этот ответ также решил этот вопрос.

0 голосов
/ 04 февраля 2019

Чтобы проверить, загружены ли ваши переменные среды, вы можете использовать docker inspect:

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

Это должно напечатать список всех ваших переменных окружения.

Я не использую Docker, поэтомув среде Windows, но вам может потребоваться экранировать символы «\» и пробелы.Кроме того, использование «-» в переменных среды представляется сомнительным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...