如何在 keycloak 中动态编辑 standalone.xml 文件
How to edit standalone.xml file dynamically in keycloak
我正在尝试通过 docker 编辑 standalone.xml 并尝试添加,但 keycloak 正在使用它的 standalone.xml
。但我能够看到 standalone.xml 文件中的更改。我需要在 standalone.xml 文件
中添加这一行
<provider>module:org.keycloak.examples.event-sysout</provider>
也试过热部署但无法获取第三方库代码
你应该去 运行 docker 容器并在那里更换。
最好的是,使用像 Kitematic https://kitematic.com/
这样的 docker 管理器
Select 运行 keycloak容器,点击EXEC图标,cd keycloak/standalone/configuration, vi standalone.xml, :wq退出,通过Kitematic重启docker镜像, 应该有效
首先,它似乎在 docker 容器中默认使用 standalone-ha.xml。您可以在 /opt/jboss/tools/docker-entrypoint.sh 中找到它。
其次,我认为更改配置文件后你必须重新启动 keycloak 服务器(容器)。
不确定 "dynamically" 是什么意思。但是在本地修改文件并构建自定义 docker 图像会更容易。 Dockerfile 可能如下所示:
FROM jboss/keycloak:6.0.1
ADD <path on your system>/standalone-ha.xml /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
可能来晚了。但我发现您可以在 dockerfile 上进行编辑。
FROM quay.io/keycloak/keycloak:11.0.0
RUN sed -i -E "s/(<staticMaxAge>)2592000(<\/staticMaxAge>)/\-1/" /opt/jboss/keycloak/standalone/configuration/standalone.xml
RUN sed -i -E "s/(<cacheThemes>)true(<\/cacheThemes>)/false/" /opt/jboss/keycloak/standalone/configuration/standalone.xml
RUN sed -i -E "s/(<cacheTemplates>)true(<\/cacheTemplates>)/false/" /opt/jboss/keycloak/standalone/configuration/standalone.xml
RUN sed -i -E "s/(<staticMaxAge>)2592000(<\/staticMaxAge>)/\-1/" /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
RUN sed -i -E "s/(<cacheThemes>)true(<\/cacheThemes>)/false/" /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
RUN sed -i -E "s/(<cacheTemplates>)true(<\/cacheTemplates>)/false/" /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
参考:https://github.com/anthonny/kit-keycloak-theme/blob/master/Dockerfile
如果没有 jboss-cli on docker 图像,您不能替换或覆盖 standalone-ha.xml/standalone.xml。只需要创建一个 sh 文件,放在 startup-script 文件夹中。在初始化期间,它将启动并配置您的文件。
keycloak-cli
embed-server --server-config=standalone-ha.xml --std-out=echo
batch
/subsystem=keycloak-server:list-add(name=providers, value=module:org.keycloak.examples.event-sysout)
run-batch
stop-embedded-server
Docker 文件
FROM jboss/keycloak:latest
COPY keycloak.cli /opt/jboss/startup-scripts/keycloak.cli
我正在尝试通过 docker 编辑 standalone.xml 并尝试添加,但 keycloak 正在使用它的 standalone.xml
。但我能够看到 standalone.xml 文件中的更改。我需要在 standalone.xml 文件
<provider>module:org.keycloak.examples.event-sysout</provider>
也试过热部署但无法获取第三方库代码
你应该去 运行 docker 容器并在那里更换。 最好的是,使用像 Kitematic https://kitematic.com/
这样的 docker 管理器Select 运行 keycloak容器,点击EXEC图标,cd keycloak/standalone/configuration, vi standalone.xml, :wq退出,通过Kitematic重启docker镜像, 应该有效
首先,它似乎在 docker 容器中默认使用 standalone-ha.xml。您可以在 /opt/jboss/tools/docker-entrypoint.sh 中找到它。 其次,我认为更改配置文件后你必须重新启动 keycloak 服务器(容器)。
不确定 "dynamically" 是什么意思。但是在本地修改文件并构建自定义 docker 图像会更容易。 Dockerfile 可能如下所示:
FROM jboss/keycloak:6.0.1
ADD <path on your system>/standalone-ha.xml /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
可能来晚了。但我发现您可以在 dockerfile 上进行编辑。
FROM quay.io/keycloak/keycloak:11.0.0
RUN sed -i -E "s/(<staticMaxAge>)2592000(<\/staticMaxAge>)/\-1/" /opt/jboss/keycloak/standalone/configuration/standalone.xml
RUN sed -i -E "s/(<cacheThemes>)true(<\/cacheThemes>)/false/" /opt/jboss/keycloak/standalone/configuration/standalone.xml
RUN sed -i -E "s/(<cacheTemplates>)true(<\/cacheTemplates>)/false/" /opt/jboss/keycloak/standalone/configuration/standalone.xml
RUN sed -i -E "s/(<staticMaxAge>)2592000(<\/staticMaxAge>)/\-1/" /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
RUN sed -i -E "s/(<cacheThemes>)true(<\/cacheThemes>)/false/" /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
RUN sed -i -E "s/(<cacheTemplates>)true(<\/cacheTemplates>)/false/" /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
参考:https://github.com/anthonny/kit-keycloak-theme/blob/master/Dockerfile
如果没有 jboss-cli on docker 图像,您不能替换或覆盖 standalone-ha.xml/standalone.xml。只需要创建一个 sh 文件,放在 startup-script 文件夹中。在初始化期间,它将启动并配置您的文件。
keycloak-cli
embed-server --server-config=standalone-ha.xml --std-out=echo
batch
/subsystem=keycloak-server:list-add(name=providers, value=module:org.keycloak.examples.event-sysout)
run-batch
stop-embedded-server
Docker 文件
FROM jboss/keycloak:latest
COPY keycloak.cli /opt/jboss/startup-scripts/keycloak.cli