Переменные среды Dropwizard

#java #jersey #environment-variables #dropwizard

#java #джерси #переменные среды #dropwizard

Вопрос:

У меня возникли проблемы с поиском хороших ресурсов для конфигурации среды dropwizard, руководства от dropwizard мне не очень помогают.

Я пытаюсь сохранить свою jwtSecret конфигурацию в config.yml качестве переменной среды, чтобы она оставалась секретной, даже если я делаю свой код с открытым исходным кодом как

 jwtSecret: ${JWT_SECRET}
  

Я прочитал руководства и знаю, что мне нужно добавить SubstitutingSourceProvider , чтобы успешно заменить конфигурацию моими переменными среды. Однако я не нахожу, где сохранить мои переменные окружения. Есть ли конкретное место, где dropwizard находит его, или мне нужно где-то добавить путь к переменным среды?

Ответ №1:

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

Сначала мы включаем эту функцию, добавляя ее в функцию инициализации приложения:

 bootstrap.setConfigurationSourceProvider(new SubstitutingSourceProvider(bootstrap.getConfigurationSourceProvider(), new EnvironmentVariableSubstitutor(false)));
  

Затем есть config.yml:

 jwtSecret: ${JWT_SECRET}
  

Чтобы получить доступ к переменной в вашем приложении, вам необходимо добавить ее в класс конфигурации приложения:

 private String jwtSecret;
  

( средство получения и установки для него)

И, наконец, вам нужно добавить переменную JWT_SECRET в системные переменные среды. Это зависит от того, какую операционную систему вы используете, и хотите ли вы установить ее временно или постоянно.

Комментарии:

1. Возможно ли иметь в моем проекте файл .env для сохранения там переменных окружения или мне нужно сохранить его в моем .zshrc?

2. Это зависит от того, как вы запускаете приложение. Например, я использую IntelliJ для разработки, и я настроил переменные среды в окне конфигурации запуска проекта IntelliJ, если я запускаю приложение из пакета Java за пределами IntelliJ, я сначала запускаю сценарий оболочки, в котором настроены значения среды, а затем запускаю пакет — поэтому у меня их нет вмой .bashrc тоже. В моих промежуточных и программных средах они были настроены для контейнера k8s.