gpt4 book ai didi

docker - 如何在分布式环境中将数据库连接参数传递给Keycloak

转载 作者:行者123 更新时间:2023-12-02 19:15:47 26 4
gpt4 key购买 nike

我正在使用在Docker容器中运行的Keycloak服务器。
我开发了一个用户存储提供程序以连接到客户端数据库,以搜索用户信息和登录验证。
我在代码中编写了数据库连接属性,但是现在是时候正确地做到这一点了,例如在启动时向Docker容器提供该信息并从代码中获取该信息。
我猜我的UserStorageProviderFactory的init(Config.Scope config)方法是查找这些参数的地方。那里的config参数包含来自文件standalone.xml的信息,但我需要在启动时将连接参数传递给Docker,以便可以轻松修改它们。
我怎么能这样呢?

最佳答案

您可以使用jboss-cli脚本将您的UserStorageProvider添加到standalone / -ha.xml,其属性可以由传递给容器的环境变量设置。
示例:
假设我们有一个spi.cli脚本,其中包含以下内容:

/subsystem=keycloak-server/spi=my-spi/provider=my-custom-auth-provider:add(enabled=true,properties={"my.custom.property", "${env.MY_ENV:myDefaultValue}"})
可以将其放在容器中的 /opt/jboss/startup-scripts文件夹中,以在启动时自动运行,请参阅 Keycloak docker documentation
运行时,它将独立生成以下内容:

<spi name="my-spi">
<provider enabled="true" name="my-custom-auth-provider">
<properties>
<property name="my.custom.property" value="${env.MY_ENV:myDefaultValue}"/>
</properties>
</provider>
</spi>

然后可以使用init方法中的 Config.Scope在代码中访问这些属性。
例如 config.get("my.custom-property")
然后,它将检索传递到容器的值 -e MY_ENV=test_value

关于docker - 如何在分布式环境中将数据库连接参数传递给Keycloak,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63505402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com