DockerComposeを使ってKeycloakを動かす
公開日時:
どうもみなさんこんにちは。錦です。
実は先日、PC が見事に壊れて新 PC を入荷することになりました。というかしました。 無事 PC も設置できて色々な気力が戻ってきたので、早速ですが Keycloak で遊んだ備忘録を残しておきます。
はじめに
今回は、Keycloak の実験環境を DockerCompose を使って構築します。
基本的には開発環境用なので、本番環境では利用しないようにお願いします。 ただ、設定の解説も残しておく予定なので、本番環境で使う際も参考にはなると思います。
Keycloak そのものについては、Wikipedia や公式サイトをご覧ください。 基本的には、SSO(シングルサインオン)などを実現するための OSS(オープンソースソフトウェア)です。
結論
早速にはなりますが、以下のようになります。
Wtb Nishiki / Keycloak Docker Compose Yaml · GitLab
services:
keycloak:
image: quay.io/keycloak/keycloak:latest
command: start-dev
environment:
- KEYCLOAK_ADMIN=admin
- KEYCLOAK_ADMIN_PASSWORD=admin
- KC_DB=mariadb
- KC_DB_URL_HOST=db
- KC_DB_USERNAME=myuser
- KC_DB_PASSWORD=change_me
- KC_HOSTNAME=localhost
ports:
- "8080:8080"
depends_on:
- db
db:
image: mariadb:10
environment:
- MARIADB_DATABASE=keycloak
- MARIADB_USER=myuser
- MARIADB_PASSWORD=change_me
- MARIADB_ROOT_PASSWORD=change_me
解説
コンセプトとしては、できる限り本番環境に必要になる設定を行っておくという感じです。
Keycloak 本体が動くコンテナと、データベース用のコンテナに分かれています。
データベース
今回、データベースには MariaDB を選択しました。
理由としては、公式 HP の Supported databases で推奨されてるデータベース及びバージョンのなかで、OSS で LTS バージョンが使用できるものが MariaDB だったからです。
余談ですが、PostgresSQL のバージョン 10 はサポート終了期限を超えていました。
Configuring the database - Keycloak
command
Keycloak の実行のためのコマンドを指定しています。
ちなみに、本番環境になると実行コマンドは以下のようになります。
bin/kc.[sh|bat] start --optimized
環境変数(environment)
Keycloak の設定は、CLI(command:)からも指定できるのですが、今回は環境変数で指定しました。具体的には以下のようになっています。
環境変数 | 説明 | 備考 |
---|---|---|
KEYCLOAK_ADMIN | 管理者の ID | Docker からの起動時のみ利用可能 |
KEYCLOAK_ADMIN_PASSWORD | 管理者のパスワード | Docker からの起動時のみ利用可能 |
KC_DB | 利用するデータベースソフトウェアを指定 | mariadb, mssql, mysql, oracle, postgres |
KC_DB_URL_HOST | データベースのホスト名(接続先) | |
KC_DB_USERNAME | データベース接続のためのユーザー名 | |
KC_DB_PASSWORD | データベース接続のためのユーザーパスワード | |
KC_HOSTNAME | 接続されるホスト名(ブラウザから接続するときのドメイン) | 本番環境では指定推奨 |
KEYCLOAK_ADMIN と KEYCLOAK_ADMIN_PASSWORD に関しては Docker 環境時のみに利用可能です。通常の環境では Web 画面から管理者アカウントの作成になります。
また、Keycloak が利用する DB 名はデフォルトで keycloak になっています。
あとがたり
そんなこんなで、Keycloak で色々実験してみたい時などの参考になれば幸いです。 これからも Keycloak というか、認証を楽にするための知見をどんどん貯めていければなと思います。 セキュリティキーとかも試してみたい。