Dockerで開発用にレルム/ユーザー/クライアントを登録して、それをエキスポートする方法を備忘録的に書いておきます。
データ登録
開発用にレルム/ユーザー/クライアントを登録します。
空のフォルダに移動して Docker で Keycloak をstart-devで起動します。
このときカレントディレクトリを /opt/keycloak/data にマウントしておきます。
このなかに既定のデータベースであるh2のデータフォルダができます。
あとは普通に http://localhost:8080 にアクセスして、adminコンソールから、レルムの作成、クライアントやユーザーを登録してください。
今回はレルムはmainという名前にします。
docker run --rm -v .:/opt/keycloak/data -p 8080:8080 \
-e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=P@ssw0rd \
quay.io/keycloak/keycloak:latest start-dev
終わったら、C-cで終了します。
エキスポート
エキスポートは以下のコマンドで実行します。
docker run --rm -v .:/opt/keycloak/data quay.io/keycloak/keycloak:latest \
export --dir /opt/keycloak/data/export --users realm_file --realm main
これで export
ディレクトリに main-realm.json
が出来上がります。
インポート
起動時にインポートするには、/opt/keycloak/data/import に、このmain-realm.json
を置いておいて、起動時の引数に--import-realmをつけて起動することで自動的にインポートされます。
ボリュームのマウント位置が変わっているので気を付けてください。
docker run --rm -v export:/opt/keycloak/data/import -p 8080:8080 \
-e KEYCLOAK_ADMIN=admin -e KEYCLOAK_ADMIN_PASSWORD=P@ssw0rd \
quay.io/keycloak/keycloak:latest start-dev --import-realm
これで起動時に読み込めます。簡単ですね。
注意点としては
- master-realm.jsonは読み込めない。既にレルムが存在する場合にはスキップ。
- ユーザーが多いときは --usersのオプションを変更する
詳しくはImporting and Exporting Realmsを参照してください。