您好,我有一个问题,我想知道是否可以仅使用 Keycloak Docker 映像来解决。我试图解决的问题是,我们在较低环境中有一个领域,我们希望在较高环境上复制该领域。假设开发团队在环境 A 上添加客户端角色、属性或映射器,执行部分导出,然后在环境 B 中将
--import-realm
参数添加到 kc.sh start
并将导出的 json 文件挂载到 /opt/keycloak/data/import
问题是,如果领域已经存在,则导入将被跳过。有没有办法“覆盖/强制”此重新导入?或者我需要使用类似
bitnami/keycloak-config-cli
图像的东西来执行此操作?
如果您使用的是官方 KeyCloak Docker 镜像,那么您应该在 Dockerfile/compose 文件中将
migration.strategy
Java 参数设置为 OVERWRITE_EXISTING
(默认为 IGNORE_EXISTING
,这就是跳过导入的原因)。
例如:
KEYCLOAK_IMPORT=/opt/keycloak/data/import/keycloak-realm.json
JAVA_OPTS_APPEND=-Dkeycloak.profile.feature.upload_scripts=enabled -Dkeycloak.migration.strategy=OVERWRITE_EXISTING
导入/导出参考:
注:
OVERWRITE_EXISTING
策略将完全覆盖(不扩展或追加)现有领域,因此您必须确保要使用提供的领域。