KeyCloak

Keycloak Docker Setup Guide with docker-compose.yml

ⓘ本ページはプロモーションが含まれています

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


スポンサードリンク

KeycloakをDockerで構築するメリットと基本的な流れ

KeycloakをDocker環境で構築することで、開発・テスト環境の迅速なセットアップや、複数プロジェクト間での一貫した認証管理が可能になります。特にDevOpsエンジニアやシステム管理者にとっては、コンテナ技術の利便性とKeycloakの柔軟性を組み合わせた構成が実務に直結します。本記事では、docker-compose.ymlファイルを用いた簡単なセットアップ手順と、永続化設定の要点を解説します。


docker-compose.ymlファイルの基本構成と作成手順

KeycloakをDockerで構築する際、docker-compose.ymlは最も重要な設定ファイルです。このファイルでは、KeycloakコンテナとPostgreSQLデータベースとの連携を明確に定義します。

サービス定義の要点

docker-compose.ymlには、KeycloakとPostgreSQLそれぞれのサービスが含まれます。以下が基本的な構成例です:

注意:
- versionは常に最新のDocker Composeバージョンに合わせることを推奨します(例: '3.9')。
- DB_PASSWORDなどの明文パスワード記述はセキュリティリスクです。実環境ではDocker Secrets.envファイルで管理することを強く推奨します。

環境変数の設定方法

KeycloakとPostgreSQLの接続には、環境変数が不可欠です。以下に主な項目を一覧化しました:

項目 補足
DB_VENDOR POSTGRES 使用するデータベースの種類
DB_ADDR postgres PostgreSQLコンテナ名(Docker内部)
DB_PORT 5432 PostgreSQLのデフォルトポート
DB_DATABASE keycloak Keycloak用データベース名
DB_USER keycloak データベースユーザー
DB_PASSWORD <your_password> DBアクセス用パスワード(推奨: セキュリティ管理で設定

セキュリティ注意:
実環境では、DB_PASSWORDは環境変数ファイルなどで管理し、明文での記述を避けるべきです。


ポートマッピング設定と外部アクセスの確認方法

KeycloakコンテナをホストOSからアクセスできるようにするためには、ポートマッピングが必須です。また、ファイアーウォールやネットワーク構成によっては、接続テストが失敗することがあります。

HTTP/HTTPSポートの違い

KeycloakはデフォルトでHTTPの8080ポートを使用します。HTTPSを有効にする場合は、証明書を設定し、443ポートにマッピングする必要があります。しかし、開発環境ではHTTP接続で十分な場合が多いため、初期構築時は8080ポートを指定するのが一般的です。


KeycloakとPostgreSQLの連携設定方法

KeycloakはPostgreSQLに認証情報を永続化するため、適切なデータベース接続設定が重要です。また、セキュリティを重視する場合は、環境変数でのパスワード管理やVolumeによるデータ保存が推奨されます。

永続化用Volumeの指定

KeycloakとPostgreSQLそれぞれにVolumeを指定することで、データがコンテナ再起動時でも保持されます:

  • keycloak_data: Keycloakの設定・ユーザーデータを永続化(公式イメージでは/opt/jboss/keycloakに保存されるため、このパスを明記する必要があります
  • postgres_data: PostgreSQLのデータベースファイルを永続化

管理画面へのアクセス確認手順と初期設定

Keycloak構築後は、管理画面にアクセスし、初期設定を行う必要があります。特に認証フローの構成やデフォルトユーザーの変更が重要です。

初期アカウントの変更方法

デフォルトで使用できるユーザーはadminで、パスワードはadminです。ただし、セキュリティ強化のために必ず初期パスワードを変更してください:

  1. http://localhost:8080/auth/admin/にアクセス
  2. ログイン画面でadminユーザーと初期パスワードを入力
  3. 「Change Password」から新しいパスワードを設定

注意: 本番環境では、管理アカウントのパスワードポリシー(最小文字数・特殊文字含むなど)を厳格化する必要があります。


データ永続化のベストプラクティスとVolumeの活用

KeycloakとPostgreSQL共にデータ永続化がなければ、コンテナの停止や削除時にデータが失われる可能性があります。これを防ぐためにも、Volumeを上手く活用する必要があります。

コンテナ再起動時のデータ保持

Volumeを使用することで、コンテナを再起動・再構築してもデータが残ります:

  • Keycloak: /opt/jboss/keycloakに永続化された設定とユーザーデータが保存されます
  • PostgreSQL: /var/lib/postgresql/dataにデータベースファイルが保存され、DBの再構築を必要としません

構築時のよくあるエラーとその解決策

Keycloak構築時に発生する代表的なエラーには、ポート競合やデータベース接続失敗があります。それぞれの原因と対処法を解説します。

ポート競合時の対処

docker-compose upで以下のようなエラーが発生した場合、すでに8080ポートを使用しているプロセスがある可能性があります:

解決法:

  1. lsof -i :8080で使用中のアプリケーションを確認
  2. 使用中であれば、ポート変更(例: 8081:8080)や停止する

データベース接続失敗の原因

KeycloakがPostgreSQLにアクセスできない場合は、以下の点を検証してください:

  • PostgreSQLコンテナが起動しているか (docker ps)
  • 環境変数 DB_ADDR, DB_PORT が正しく設定されているか
  • ネットワークの設定(デフォルトではDockerネットワークで自動接続される)

解決法:

  1. Keycloakコンテナ内でPostgreSQLにpingを送信 (docker exec -it keycloak ping postgres)
  2. 接続できなければ、DB_ADDRをホスト名(例: postgres)に変更

トラブルシューティングのコツ: Dockerログは docker logs keycloakで確認可能です。エラーメッセージから原因を特定しやすいので、まずはこれをチェックしましょう。


スポンサードリンク

もっとスキルを活かしたいエンジニアへ

スポンサードリンク
働き方から選べる

無料で使えて良質な案件の情報収集ができるサービス

エンジニアの世界では、「いつでも動ける状態を作っておけ」とよく言われます。
技術やポートフォリオがあっても、自分に合う案件情報を日常的に見れていないと、いざ動こうと思った時に比較や判断が難しくなってしまいます。
普段から案件情報が集まる環境を作っておくと、良い案件が出た時にすぐ動きやすくなりますよ。
筆者自身も、メガベンチャー勤務時代に年収1,500万円を超えた経験があります。振り返ると、技術だけでなく「どんな案件や働き方があるか」を日頃から見ていたことが、キャリアの選択肢を広げるきっかけになりました。
このブログを読んでくれた方に感謝を込めて、実際に使っている情報収集サービスを紹介します。

フルリモート・週3日・高単価、どんな条件も妥協したくないなら

フリーランスボードに無料会員登録する

利用者10万人以上。業界最大規模45万件の案件。AIマッチ機能や無料の相場情報が人気。

年収800万円以上のキャリアアップ・ハイクラス正社員を視野に入れているなら

Beyond Careerに無料相談する

内定獲得率90%以上。紹介先企業とは役員クラスのコネクションがある安心と信頼できるエージェント。


-KeyCloak