如何将 env 变量传递到 Helidon 中的 application.yaml 文件中

问题描述 投票:0回答:3

我想传递这样的东西

    tracing:
      service: "test-service"
      host: ${TRACING_AGENT_HOST}
      port: ${PORT}
java trace jaeger helidon
3个回答
3
投票

application.yaml
就像一个静态属性文件。它不涉及变量替换。

仔细阅读https://helidon.io/docs/latest/#/mp/guides/03_config的段落默认配置的源优先级,并观察如何覆盖嵌入式配置文件中的属性。

在这种情况下,您可以简单地通过将自定义变量传递到 java 命令行来覆盖您想要的属性。

例如,您可以按如下所述实现您的目标:

tracing:
  service: "test-service"
  host: default-host-name
  port: 8080
java -Dtracing.host=remote-hostname -Dtracing.port=8080 -jar your_artifact.jar

export TRACING_HOST=remote-hostname
export TRACING_PORT=8080

java -jar your_artifact.jar

0
投票

无论您使用 Helidon SE 还是 Helidon MP,配置源都是“堆叠”的,并且属性标量是独立的。因此,如果您不指定:

tracing:
  host:

…完全可以,如果您已确保已安装环境变量读取配置源,那么将从环境中读取它。

您可以在此处阅读有关 Helidon SE 专有配置系统的更多信息:https://helidon.io/docs/v2/#/se/config/01_introduction

您可以在此处阅读有关 MicroProfile 配置系统(Helidon MP 实现)的更多信息:https://download.eclipse.org/microprofile/microprofile-3.3/microprofile-spec-3.3.html#mp-config


0
投票

对于 Helidon 3,这似乎是工作惯例

对于与此对应的配置 yaml 值,

app:
  persistenceProvider:
    className: com.example.provider.InMemoryProvider

你需要像这样导出变量

export app_persistenceProvider_className=com.example.provider.InMemoryProvider
© www.soinside.com 2019 - 2024. All rights reserved.