Как задать переменную окружения для свойства quarkus с дефисом?

#quarkus #smallrye

Вопрос:

При настройке переменных среды для свойств с дефисами, таких как:

 quarkus.datasource.db-kind=postgresql
 

Я бы ожидал, что он будет установлен как:

 export QUARKUS_DATASOURCE_DB_KIND=postgresql
 

Однако это приводит к следующему сообщению:

 Unrecognized configuration key "quarkus.datasource.db.kind" was provided; it will be ignored;
 

Все остальные свойства, без дефисов, передаются правильно.

Это также происходит для других свойств:

 export QUARKUS_DATASOURCE_JDBC_MIN_SIZE=10
export QUARKUS_DATASOURCE_JDBC_INITIAL_SIZE=20
export QUARKUS_DATASOURCE_JDBC_MAX_SIZE=1000
...
Unrecognized configuration key "quarkus.datasource.jdbc.max.size" was provided;
Unrecognized configuration key "quarkus.datasource.jdbc.min.size" was provided;
Unrecognized configuration key "quarkus.datasource.jdbc.initial.size" was provided;
 

Обходной путь:
Переименуйте переменные среды и передайте их в application.properties с именами через дефис:

 quarkus.datasource.jdbc.initial-size=${DATASOURCE_JDBC_INITIAL_SIZE}
quarkus.datasource.jdbc.min-size=${DATASOURCE_JDBC_MIN_SIZE}
quarkus.datasource.jdbc.max-size=${DATASOURCE_JDBC_MAX_SIZE}
 

Каково правильное обращение? Это где-то задокументировано?

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

1. Вы устанавливаете это во время сборки или во время выполнения?

Ответ №1:

Попробуйте заменить дефис подчеркиванием. В моем случае это работает, несмотря на предупреждающее сообщение.

приложение.yml

 quarkus:
   swagger-ui:
     enable: false
 

запуск докера

 $ docker run -d -e QUARKUS_SWAGGER_UI_ENABLE=true -p 8080:8080 sample.com/foo
__  ____  __  _____   ___  __ ____  ______
 --/ __ / / / / _ | / _ / //_/ / / / __/
 -/ /_/ / /_/ / __ |/ , _/ ,< / /_/ / 
--________/_/ |_/_/|_/_/|_|____/___/
2021-06-09T05:34:55.192Z WARN  [io.qua.config] Unrecognized configuration key "quarkus.swagger.ui.enable" was provided; it will be ignored; verify that the dependency extension for this configuration is set or that you did not make a typo
2021-06-09T05:35:12.947Z INFO  [sam.com.access-log] 192.168.113.42 - - "GET /q/openapi HTTP/1.1" 200 14464 -
 

Ответ №2:

Я думаю, что большинство оболочек считают дефис недопустимым идентификатором. В зависимости от того, как запускается quarkus (CLI?), вы можете сделать что-то вроде

 env "QUARKUS_DATASOURCE_DB-KIND=postgresql" quarkus
 

Это делает некоторые предположения о том, как переменные env преобразуются в конфигурационные ключи. Основываясь на предоставленной вами информации, это выглядит как приведение в нижний регистр и замена _ на . ? Кто знает, что это сделает с дефисом

Ответ №3:

Кваркус следует соглашениям об именах из МикроПрофиля:

Точное совпадение (т. е. com.ACME.размер)

Замените каждый символ, который не является ни буквенно-цифровым, ни_, на _ (т. е. com_ACME_size)

Замените каждый символ, который не является ни буквенно-цифровым, ни_, на _; затем >преобразуйте имя в верхний регистр (т. е. COM_ACME_SIZE)

Таким образом, QUARKUS_DATASOURCE_DB_KIND верен, но это свойство является свойством только для времени сборки, как видно со значком блокировки на https://quarkus.io/guides/all-config#quarkus-datasource_quarkus.источник данных.db-вид

Таким образом, вам нужно будет установить это во время сборки, чтобы это возымело действие.

Тем не менее, сообщение об ошибке невелико, и если вы можете подтвердить, что пытаетесь установить это время выполнения, а не время сборки, пожалуйста, откройте проблему с вашим контекстом и предложите улучшить сообщение об ошибке, чтобы подчеркнуть, что оно является или может быть свойством только для времени сборки.

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

1. Свойство задано для всей оболочки, сборки и среды выполнения… возможно, есть способ проверить, каково фактическое значение времени выполнения всех свойств конфигурации…

2. Установка начального размера пула, максимального размера, минимального размера, начального размера также выдает одно и то же предупреждение: « 2021-09-27 18:16:14 783 ПРЕДУПРЕЖДЕНИЕ [io.qua.config] (основной) Нераспознанный конфигурационный ключ «кваркус. источник данных.jdbc.минимальный размер» был предоставлен; он будет проигнорирован; убедитесь, что расширение зависимости для этой конфигурации установлено или что вы не допустили опечатку « Набор параметров env равен: — QUARKUS_DATASOURCE_JDBC_INITIAL_SIZE В соответствии с quarkus.io/guides/datasource#jdbc-configuration , они могут быть установлены во время выполнения.