生産性のない時間 is プライスレス

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管理者の IDDocker からの起動時のみ利用可能
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 になっています。

All configuration - Keycloak

あとがたり

そんなこんなで、Keycloak で色々実験してみたい時などの参考になれば幸いです。 これからも Keycloak というか、認証を楽にするための知見をどんどん貯めていければなと思います。 セキュリティキーとかも試してみたい。