如何使用docker在keycloak服务器中加载初始域?

ncecgwcz  于 2023-10-16  发布在  Docker
关注(0)|答案(4)|浏览(121)

我正在启动一个keycloak服务器,并希望让服务器导入一个默认领域(作为启动)。但即使这样也不起作用:
/tmp/example-realm.json

{
  "realm": "springboot-quickstart",
  "enabled": true,
  "sslRequired": "external",
  "registrationAllowed": true,
  "requiredCredentials": [ "password" ],
  "clients": [
    {
      "clientId": "service-springboot",
      "enabled": true,
      "bearerOnly": true,
      "protocol": "openid-connect"
    }
  ]
}

开始:

docker run -p 8180:8080
  -e KEYCLOAK_ADMIN=admin
  -e KEYCLOAK_ADMIN_PASSWORD=admin
  -e KEYCLOAK_IMPORT=/tmp/example-realm.json
  -v /tmp/example-realm.json:/tmp/example-realm.json
  quay.io/keycloak/keycloak:17.0.0 start-dev

结果:只有master领域存在,但我导入的领域丢失。
相反,当我转到keycloak的管理页面并手动导入该文件时,client“springboot-quickstart”成功导入到我的master领域。所以json文件一般来说应该没问题。
那么,为什么这在初始启动时不起作用呢?

wnvonmuf

wnvonmuf1#

这似乎是17.0.0中的一个错误,但将在17.0.1中得到修复。
参见this issue

l7mqbcuq

l7mqbcuq2#

我可以如下修复它:-e JAVA_OPTS="-Dkeycloak.import=/tmp/example-realm.json"
但是我仍然想知道为什么-e KEYCLOAK_IMPORT不工作。

h5qlskok

h5qlskok3#

一个新的keycloak版本的docker-compose方法对我来说很有效。./apps/keycloak/import目录包含我的realm-export.json

version: '3.3'
services:
  keycloak:
    image: quay.io/keycloak/keycloak:22.0.0
    ports:
      - 8062:8080
    volumes:
      - ./apps/keycloak/import:/opt/keycloak/data/import
    command: start-dev --import-realm
    environment:
      - KEYCLOAK_ADMIN=admin
      - KEYCLOAK_ADMIN_PASSWORD=admin
      - DB_VENDOR=postgres
      - DB_ADDR=database
      - DB_DATABASE=keycloak
      - DB_USER=postgres
      - DB_PASSWORD=postgres
blmhpbnm

blmhpbnm4#

使用带有--import-realm标志的keycloak 18.0.1,我能够将我的json放入data/import文件夹,它似乎可以工作:

docker run -p 8180:8080
  -e KEYCLOAK_ADMIN=admin
  -e KEYCLOAK_ADMIN_PASSWORD=admin
  -v /tmp/example-realm.json:/opt/keycloak/data/import/example-realm.json
  quay.io/keycloak/keycloak start-dev --import-realm

相关问题