Keycloak/Undertow/JBoss-CLI - 从环境变量中设置“web-context”
Posted
技术标签:
【中文标题】Keycloak/Undertow/JBoss-CLI - 从环境变量中设置“web-context”【英文标题】:Keycloak/Undertow/JBoss-CLI - Set "web-context" from environment variable 【发布时间】:2018-04-04 04:38:54 【问题描述】:我对 Wildfly/Undertow 和 JBoss-CLI 设置 Keycloak 的 Web 上下文有疑问。
环境变量本身似乎没有被解析,但其他环境变量似乎被解析了。
我创建了以下 CLI 脚本:
/subsystem=keycloak-server/:write-attribute(name=web-context,value=$env.KEYCLOAK_WEB_CONTEXT:auth)
由 docker build 执行,standalone.xml 中的结果看起来也不错:)
当启动 Keycloak-Service 时,它不会解析变量,它只会使用变量本身:
14:30:30,556 INFO [org.wildfly.extension.undertow] (ServerService
Thread Pool -- 60) WFLYUT0021: Registered web context:
'/$env.KEYCLOAK_WEB_CONTEXT:auth' for server 'default-server'
在将 jboss-cli.sh 连接到容器并请求我得到的变量后:
[standalone@localhost:9990 subsystem=keycloak-server] ls -l
ATTRIBUTE VALUE TYPE
web-context $env.KEYCLOAK_WEB_CONTEXT:auth STRING
使用已解析的表达式:
[standalone@localhost:9990 subsystem=keycloak-server] ls -l --resolve-expressions
ATTRIBUTE VALUE TYPE
web-context helloworld/auth STRING
到目前为止,一切看起来都很好。任何想法为什么 Undertow 以变量而不是已解析变量开头?这是一个潜在的错误吗?
最好的问候,感谢您的帮助!
【问题讨论】:
【参考方案1】:我知道这已经有两年了,但我最近试图解决这个问题,我想通了,所以我想如果有人遇到这个问题,我会跟进。
不要在表达式中使用 $env.VAR 模式,而是在脚本顶部使用它们作为变量赋值。借鉴父示例:
set CONTEXT=$env.KEYCLOAK_WEB_CONTEXT
/subsystem=keycloak-server/:write-attribute(name=web-context,value=$CONTEXT)
环境变量作为 $CONTEXT 的值被拉入,即使它在 write-attribute 行中使用时对我没有用。
【讨论】:
我刚刚用它创建了一个 cli,但是在启动服务器时它失败并出现以下错误:No connection to the controller.
看起来应该首先启动服务器,但是如果服务器正在运行,我会得到一个不同的错误Can't reset to root in the middle of the path @74
...知道吗?你如何以及何时运行你的脚本......你能分享一下吗?以上是关于Keycloak/Undertow/JBoss-CLI - 从环境变量中设置“web-context”的主要内容,如果未能解决你的问题,请参考以下文章