У меня есть. NET Core Web API, и я пытаюсь выяснить, как использовать переменные ENV для настройки ключей в моем appsetttings.json
, чтобы я мог заполнить данные при создании контейнера Docker.
До сих пор мне удалось внедрить IOptions<>
в мой тестовый контроллер, и я смог отладить значения, которые были NULL, потому что приложение в данный момент еще не запущено в контейнере.
Test контроллер:
namespace TestWebApplication.Controllers
{
[ApiController]
[Route("api/")]
public class TestController : ControllerBase
{
private readonly IOptions<EnvironmentConfiguration> _environmentConfiguration;
public TestController(IOptions<EnvironmentConfiguration> environmentConfiguration)
{
_environmentConfiguration = environmentConfiguration;
}
[HttpGet]
[Route("testmessage")]
public ActionResult<string> TestMessage()
{
var test = _environmentConfiguration.Value;
return Ok($"Value from EXAMPLE_1 is {test.EXAMPLE_1}");
}
}
}
Конфигурация среды:
namespace TestWebApplication.Models
{
public class EnvironmentConfiguration
{
public string EXAMPLE_1 { get; set; }
public string EXAMPLE_2 { get; set; }
}
}
После изучения некоторых более старых руководств я заметил, что на самом деле мне никогда не нужно было вставлять какой-либо код в ConfigureServices
, чтобы это работало.
Например, допустим, у меня есть эта часть моего appsettings.json
:
"eureka": {
"client": {
......
},
"instance": {
"port": "xxxx",
"ipAddress": "SET THIS WITH ENV",
}
}
Как я могу установить переменную окружения для заполнения ipAddress
, когда я go в Docker , Я запускаю что-то вроде этого:
docker run .... -e EXAMPLE_1 -e IP_ADDRESS ....