nuxt.jsのAuth Moduleのstrategyが実行時に変更できない件

October 07, 2020

kubernetesやdockerを使ってデプロイする時、環境変数を使って環境に応じていろいろパラメータを変更するとイメージを変更せずに挙動を環境に適したものにカスタマイズできるので便利です。これを応用して、nuxt.jsのAuth Moduleで、KeycloakのクライアントIDを環境に応じて切り替えようとしたのですが、ここにあるように、できないみたいです。

nuxt.config.jsのauth.strategies.keycloakでクライアントIDなどを設定しますが、このファイルはビルド時にコンパイルされるので、このプロパティに環境変数を設定したとしても、ビルド時の環境変数が使用されてしまうので、実行時の環境変数はセットされません。ビルドされたファイルの中の値を無理やりコンテナ起動時にsedなどを使って環境に応じた値に変更するような裏技はあるようですが、スマートではないですね・・・。

よって、環境変数は開発時のみ変更(npm run devする前)して、それ以外(nuxt run buildでビルドした場合)はイメージビルド用の固定値を環境変数にセットするしかなさそうです。