yamaday0uです。
以前、Docker(docker compose)でKeycloak環境を構築という記事を投稿しましたが、このとき紹介したdocker-compose.ymlファイルには2つの課題がありました。
それは次のとおりです。
- M1チップのMacBookでは動かせない
- データの永続化ができていない
今回はその2つの課題を克服したdocker-compose.ymlファイルを作成したので、皆さんに紹介します。
docker-compose.ymlファイルの内容
以下のようにdocker-compose.ymlファイルを作成しました。このファイルはぼくのgithubでリポジトリでも公開していますので、そちらもご参照ください。
version: '3'
services:
keycloak:
image: sleighzy/keycloak:latest
container_name: keycloak
ports:
- "4000:8080"
volumes:
- ./data:/opt/jboss/keycloak/standalone/data
environment:
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: ${KEYCLOAK_PASSWORD}
どのように変わったか
imageの変更
1つ目の変更点はimageです。
以前はjboss/keycloak:16.1.1というimageを使っていたのですが、こちらはM1チップのMacBookには対応していませんでした。
そこでM1チップのMacBookが使用しているarm64アーキテクチャに対応しているimageを探していたところ、sleighzy/keycloakというimageを発見したので、これを採用しています。
ただ代わりに、IntelチップのMacBookには非対応となってしまっているので、該当する方はご注意ください。
データの永続化の実装
2つ目の変更点はvolumesを追加した点です。
データの永続化を実装するため、KeycloakをDocker Composeで動かすサンプルコードという記事を参考にしました。
ここでとても一番苦労したのですが、使用しているimageが違うためか、コンテナ側でデータを保存している場所が異なっていたので、その場所を探すのに時間を要しました。
最終的にはSTACK OVERFLOWのDocker-compose volume doesn't save state of container for Keycloakという質問に対する回答を参考にしてデータの保存場所を見つけ出しました。
データの永続化を実装したことにより、docker-compose down
でimageやvolumeが削除されても、docker compose up
で再びコンテナを生成したときでも前回まで保存されたデータを復元してくれるようになりました。