Как экспортировать файл области в контейнер докеров keycloak?

Я пытаюсь экспортировать файл области в контейнер докеров keycloak, я не могу этого сделать, потому что сервер работает, когда я выполняю эту команду:

bin/standalone.sh -Dkeycloak.migration.action=export
-Dkeycloak.migration.provider=dir -Dkeycloak.migration.dir=<DIR TO EXPORT TO>

Я попытался изменить docker-entrypoint.sh и удаляю команду, запускающую сервер:

#!/bin/bash

if [ $KEYCLOAK_USER ] && [ $KEYCLOAK_PASSWORD ]; then
    keycloak/bin/add-user-keycloak.sh --user $KEYCLOAK_USER --password $KEYCLOAK_PASSWORD
fi

if [ "$DB_VENDOR" == "POSTGRES" ]; then
  databaseToInstall="postgres"
elif [ "$DB_VENDOR" == "MYSQL" ]; then
  databaseToInstall="mysql"
elif [ "$DB_VENDOR" == "H2" ]; then
  databaseToInstall=""
else
    if (printenv | grep '^POSTGRES_' &>/dev/null); then
      databaseToInstall="postgres"
    elif (printenv | grep '^MYSQL_' &>/dev/null); then
      databaseToInstall="mysql"
    fi
fi

if [ "$databaseToInstall" != "" ]; then
    echo "[KEYCLOAK DOCKER IMAGE] Using the external $databaseToInstall database"
    /bin/sh /opt/jboss/keycloak/bin/change-database.sh $databaseToInstall
else
    echo "[KEYCLOAK DOCKER IMAGE] Using the embedded H2 database"
fi

exit $?

Однако у меня есть caschLoopBack, когда я запускаю модуль keycloak. Есть ли какое-то решение, чтобы сделать экспорт внутри контейнера докеров и остановить запуск сервера?


person Slim    schedule 02.03.2018    source источник


Ответы (1)


Вы можете запустить временный контейнер. Я использую swarm и присоединяемую сеть, но замена флага --network на некоторый --link на контейнер БД должна сделать это для ванильного контейнера докеров:

docker run --rm --network=naq\
    --name keycloak_exporter\
    -v /tmp:/tmp/keycloak-export\
    -e POSTGRES_DATABASE=keycloak\
    -e POSTGRES_PASSWORD=password\
    -e POSTGRES_USER=keycloak\
    -e DB_VENDOR=POSTGRES\
    -e POSTGRES_PORT_5432_TCP_ADDR=keycloakdb\
    jboss/keycloak:3.4.3.Final\
    -Dkeycloak.migration.action=export\
    -Dkeycloak.migration.provider=dir\
    -Dkeycloak.migration.dir=/tmp/keycloak-export\
    -Dkeycloak.migration.usersExportStrategy=SAME_FILE\
    -Dkeycloak.migration.realmName=Naq\

Затем вы найдете файлы экспорта в каталоге / tmp на вашем хосте.

person Mat    schedule 03.05.2018
comment
Я нашел это решение github.com/slim-hmidi/keycloak-export-realm - person Slim; 04.05.2018
comment
У меня это сработало отлично, я заменил сеть на --link на контейнер db. Большое спасибо, Мэт! - person kopelitsa; 02.01.2019