#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 , они могут быть установлены во время выполнения.