Keycloak не может импортировать экспортированную область, работающую в docker - PullRequest
3 голосов
/ 10 февраля 2020

Я запустил службу Keycloak с помощью команды:

docker run -d -p 8180:8080 -e KEYCLOAK_USER=admin -e \
KEYCLOAK_PASSWORD=admin -v $(pwd):/tmp --name kc \
jboss/keycloak:8.0.2

Я создал новую область на Keycloak, только дав ей имя, и ничего больше. Экспортировал его с помощью команды:

docker exec -it kc keycloak/bin/standalone.sh \
-Djboss.socket.binding.port-offset=100 -Dkeycloak.migration.action=export \
-Dkeycloak.migration.provider=singleFile \
-Dkeycloak.migration.realmName=my_realm \
-Dkeycloak.migration.usersExportStrategy=REALM_FILE \
-Dkeycloak.migration.file=/tmp/my_realm.json

Теперь у меня есть область в файле my_realm. json. Затем я запускаю новый keycloak, используя docker compose, чтобы настроить всю мою тестовую среду. Я создаю новый docker образ с этим DockerFile:

FROM jboss/keycloak:8.0.2

COPY my_realm.json /tmp/my_realm.json

ENV KEYCLOAK_IMPORT /tmp/my_realm.json
ENV KEYCLOAK_MIGRATION_STRATEGY OVERWRITE_EXISTING

Docker compose:

version: '3.4'
volumes:
  postgres_kc_data:
    driver: local
services:
  kc_postgresql:
    image: postgres:11.5
    volumes:
      - postgres_kc_data:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: kc
      POSTGRES_USER: kc
      POSTGRES_DB: kcdb
    ports:
      - 50009:5432
  keycloak:
    build: "./keycloak/" # ref to folder with above DockerFile
    environment:
      KEYCLOAK_USER: admin
      KEYCLOAK_PASSWORD: admin
      DB_VENDOR: POSTGRES
      DB_ADDR: kc_postgresql
      DB_DATABASE: kcdb
      DB_SCHEMA: public
      DB_USER: kc
      DB_PASSWORD: kc
    depends_on:
      - kc_postgresql
    ports:
    - 8080:8080

Вывод журнала при запуске docker compose указывает, что это не возможность импортировать области, и предлагает что-то о проверке клиентов. Я не добавил клиентов, так что это клиенты по умолчанию.

08:39:46,713 WARN  [org.keycloak.services] (ServerService Thread Pool -- 67) KC-SERVICES0005: Unable to import realm Demo from file /tmp/my_realm.json.: java.lang.NullPointerException
    at org.keycloak.keycloak-services@8.0.2//org.keycloak.url.DefaultHostnameProvider.resolveUri(DefaultHostnameProvider.java:83)
    at org.keycloak.keycloak-services@8.0.2//org.keycloak.url.DefaultHostnameProvider.getScheme(DefaultHostnameProvider.java:38)
    at org.keycloak.keycloak-server-spi@8.0.2//org.keycloak.models.KeycloakUriInfo.<init>(KeycloakUriInfo.java:46)
    at org.keycloak.keycloak-services@8.0.2//org.keycloak.services.DefaultKeycloakContext.getUri(DefaultKeycloakContext.java:79)
    at org.keycloak.keycloak-services@8.0.2//org.keycloak.services.util.ResolveRelative.resolveRootUrl(ResolveRelative.java:45)
    at org.keycloak.keycloak-services@8.0.2//org.keycloak.validation.DefaultClientValidationProvider.validate(DefaultClientValidationProvider.java:44)
    at org.keycloak.keycloak-services@8.0.2//org.keycloak.validation.DefaultClientValidationProvider.validate(DefaultClientValidationProvider.java:37)
    at org.keycloak.keycloak-server-spi-private@8.0.2//org.keycloak.validation.ClientValidationUtil.validate(ClientValidationUtil.java:30)
    at org.keycloak.keycloak-server-spi-private@8.0.2//org.keycloak.models.utils.RepresentationToModel.createClients(RepresentationToModel.java:1224)
    at org.keycloak.keycloak-server-spi-private@8.0.2//org.keycloak.models.utils.RepresentationToModel.importRealm(RepresentationToModel.java:362)
    at org.keycloak.keycloak-services@8.0.2//org.keycloak.services.managers.RealmManager.importRealm(RealmManager.java:506)

Любые указатели приветствуются!

1 Ответ

1 голос
/ 24 февраля 2020

Обновление до 9.0.0 исправляет это для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...