Keycloak / Undertow / JBoss-CLI - 从环境变量设置“web-context”

时间:2017-10-23 15:02:48

标签: jboss wildfly keycloak undertow

我有一个关于Wildfly / Undertow和JBoss-CLI设置Keycloak网络环境的问题。

环境变量似乎无法在下载中解决,但其他环境变量似乎已得到解决。

我创建了以下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 个答案:

答案 0 :(得分:0)

我知道这已经两岁了,但是我最近试图解决这个问题,并且我想出了办法,所以我想如果有人遇到这个问题,我会进行跟进。

不要在表达式中使用$ {env.VAR}模式,而是在脚本顶部将它们用作变量分配。从上级示例中借用:

set CONTEXT=${env.KEYCLOAK_WEB_CONTEXT}
/subsystem=keycloak-server/:write-attribute(name=web-context,value=$CONTEXT)

环境变量将作为$ CONTEXT的值输入,即使在写属性行中使用时对我而言都无效。