Docker版RedmineにKeycloak連携プラグインを入れるのは難易度が高かった

前回構築したDocker版Redmine(Rocky Linuxホスト)にて、Keycloakとの連携を試みました。
結論としては、「Docker公式イメージのままではプラグイン導入が困難」という結果になり、導入を見送りました。
その経緯と技術的な理由をメモとして残しておきます。
実現したかったこと
ユーザー管理(登録・削除)をKeycloakに一元化したい。
ログインの手間を省くSSO(シングルサインオン)が必須というわけではありません。一番の目的は、RedmineとKeycloakで「二重にユーザー管理をしたくない」ということです。
- Keycloakでユーザー作成 → Redmineにも自動で作成される
- Keycloakでユーザー削除 → Redmineからも削除(無効化)される
このように、Keycloakをマスターとして運用したかったため、以下のプラグインでの実装を試みました。
参考サイト:
https://www.maksonlee.com/how-to-enable-keycloak-oauth-login-in-redmine/
発生した問題:Gemの依存関係解決エラー
WordPressのようにプラグインを配置するだけで動くことを期待していましたが、実際には bundle install によるGemの追加インストールが必要でした。
ここで以下のエラーに直面しました。
Docker公式イメージの制約
Redmineの公式Dockerイメージは軽量化されており、必要最低限のランタイムしか含まれていません。
- コンパイラ不足:
gcc,makeなどが含まれていないため、Native Extensionsを含むGemのビルドができない。 - ライブラリ不足: プラグインが要求するOSレベルのライブラリ(開発用ヘッダファイルなど)が不足している。
解決策とそのデメリット
これを解決するには、既存のイメージを使うだけでなく、自分で Dockerfile を作成し、以下を行う必要があります。
- ベースイメージに対してビルドツールをインストール
- 必要なライブラリを追加
- その上でGemをインストール
しかし、これを行うと「手軽に公式イメージを利用できる」というDocker運用のメリットが薄れてしまいます。OSイメージの肥大化や、今後のRedmineアップデート時のメンテナンスコストを考慮し、今回はこの方法を採用しないことにしました。
まとめ
「プラグインを入れるだけ」と思っても、Docker環境下ではビルド環境の有無が壁になることが分かりました。
ユーザー同期については、プラグイン以外の方法を含めて、別のアプローチを検討したいと思います。
この記事に関する技術サポート・ご相談
「手順通りにいかない」「自社環境への構築を代行してほしい」など、
インフラ・サーバー周りでハマった際はお気軽にご相談ください。
※ Googleフォームへ移動します(初回相談無料)
個人支援・寄付について
サイトラボでは個人支援・寄付を受けております。ご協力いただける方はお願いいたします。当サイトではビットコインで受け付けております。
- ビットコイン:3LHnADwZwUbic2L45EnVJEykiG6KfbqrwS