我有两个不同的领域,我必须通过两个领域的JSON导入不同的配置(即,同时导入两个领域)。
我为上述内容创建了Docker compose。
这是代码。
version: "3"
services:
keycloak:
image: jboss/keycloak
ports:
- "8080:8080"
volumes:
- "/Users/msn/Downloads/:/Users/msn/Downloads/"
environment:
- "KEYCLOAK_USER=admin"
- "KEYCLOAK_PASSWORD=admin"
- "KEYCLOAK_IMPORT=/Users/msn/Downloads/realm-export.json,/Users/msn/Downloads/realm-expor.json"
但是它仅导入第一个JSON而不导入第二个JSON,请提出导入两个领域的解决方案。
答案 0 :(得分:2)
将两个领域都放入一个.json
文件,其中内容是数组。因此:
[
{...realm1...},
{...realm2...}
]
编辑: 也许您需要调整一些参数。我只使用Dockerfile,所以这里是内容。希望对您有帮助。
FROM jboss/keycloak:9.0.2
COPY "src/main/jib/opt/jboss/keycloak/imports/realm.json" "/opt/jboss/keycloak/imports/realm.json"
CMD ["-Dkeycloak.migration.action=import", "-Dkeycloak.migration.provider=singleFile", "-Dkeycloak.migration.file=/opt/jboss/keycloak/imports/realm.json", "-Dkeycloak.migration.strategy=IGNORE_EXISTING"]
答案 1 :(得分:1)
正在开发 Keycloak 12.0.4(在单独的文件中导入多个领域)
这是来自 Dockerfile,但您可以轻松地在 docker-compose 中使用相同的配置。
首先必须将领域文件复制到容器中
COPY keycloak-files/realm-config/* /opt/jboss/keycloak/realm-config/
现在我可以配置 JAVA_OPTS 环境变量,包括:
ENV JAVA_OPTS -server \
-Xms1303m \
-Xmx1303m \
-XX:MetaspaceSize=96M \
-XX:MaxMetaspaceSize=256m \
-Djboss.modules.system.pkgs=org.jboss.byteman \
-Djava.awt.headless=true \
-Djava.net.preferIPv4Stack=true \
-Dkeycloak.migration.action=import \
-Dkeycloak.migration.provider=dir \
-Dkeycloak.migration.dir=/opt/jboss/keycloak/realm-config \
-Dkeycloak.migration.strategy=OVERWRITE_EXISTING
重要的行以 keycloak.migration.
为前缀 - 此处我们将迁移目录(文件将从其中导入的位置)设置为与我们之前复制文件的位置相同。
version: '3.8'
services:
keycloak:
image: jboss/keycloak:12.0.4
command:
[
'-b',
'0.0.0.0',
'-Dkeycloak.migration.action=import',
'-Dkeycloak.migration.provider=dir',
'-Dkeycloak.migration.dir=/opt/jboss/keycloak/realm-config',
'-Dkeycloak.migration.strategy=OVERWRITE_EXISTING',
]
volumes:
- ./keycloak-files/realm-config:/opt/jboss/keycloak/realm-config
...
基本上是一样的。
你可以复制realm-config中的任何json文件,并且应该导入。
可以使用 IGNORE_EXISTING
迁移策略来避免覆盖。
答案 2 :(得分:0)
version: "3"
services:
keycloak:
image: jboss/keycloak
ports:
- "8080:8080"
volumes:
- "/Users/msn/Downloads/:/Users/msn/Downloads/"
environment:
- "KEYCLOAK_USER=admin"
- "KEYCLOAK_PASSWORD=admin"
#- "KEYCLOAK_IMPORT=/Users/msn/Downloads/realm-export.json,/Users/msn/Downloads/realm-expor.json"
command:
- "-b 0.0.0.0"
- "-Dkeycloak.migration.action=import"
- "-Dkeycloak.migration.provider=singleFile"
- "-Dkeycloak.migration.file=/Users/msn/Downloads/realm-export.json"
- "-Dkeycloak.migration.strategy=IGNORE_EXISTING"
请注意:所有领域都必须位于同一文件“ realm-export.json”中。