Я пытаюсь получить доступ к некоторым переменным среды докеров в моем коде C #, работающем в .Net Core.

В моем dockerfile, созданном VS, я добавил такие переменные среды:

ENV EnvKey = "value"

После создания этого образа и запуска экземпляра со встроенной опцией запуска Docker в VS я проверяю свой образ Docker с помощью docker inspect MyInstance.

В результате выводится список моей ранее определенной переменной среды в «Config» -> «Env» -> «EnvKey», так что я уверен, что она там есть.

Для некоторого тестирования я пытаюсь получить к ним доступ с помощью следующего кода:

var keys = Environment.GetEnvironmentVariables();

Однако при этом не извлекается переменная среды, содержащаяся в контейнере.

Что еще мне нужно настроить, чтобы это работало?

0
Sossenbinder 26 Дек 2019 в 18:11
Это приложение ASP.NET?
 – 
peinearydevelopment
26 Дек 2019 в 18:23
Да, Asp.Net Core 3.1
 – 
Sossenbinder
26 Дек 2019 в 18:27
Как вы понимаете, что keys не содержит вашего EnvKey?
 – 
Exploding Kitten
26 Дек 2019 в 18:29

2 ответа

Если вы запускаете приложение ASP.NET, обновление Dockerfile до ENV ASPNETCORE_EnvKey = "value" должно помочь вам.

Если на вашем компьютере запущено какое-либо другое базовое приложение .NET, просмотрите документы здесь. Казалось бы, вы не можете сделать это на уровне машины, но в вашей команде RUN вам нужно будет передать «переменные среды» процессу через команду dotnet, которую вы там вызываете.

0
peinearydevelopment 26 Дек 2019 в 18:28
Вторую часть еще не проверял, но первая часть ответа, к сожалению, не работает. Я читал, что это обязательно для параметра ASPNETCORE_Environment, но больше ничего
 – 
Sossenbinder
27 Дек 2019 в 02:57

На самом деле проблема была очень простой - в моем случае этого не было видно из вопроса.

Но в моем реальном ключе переменной среды было несколько "." в этом. Я заменил их на "_", и теперь он отлично работает.

0
Sossenbinder 27 Дек 2019 в 03:28