変数トラブルシューティングシークレットまたは参照が表示されません

シークレットまたは参照がサービスに反映されない

シークレットまたは ${{name.KEY}} 参照を設定して再デプロイしても、実行中のサービスでは期待した値が確認できないことがあります。

これは何を意味するのか

設定した値がサービスのマージ後の環境に一度も入っていないか、アプリの起動前にマージ処理で別の値に上書きされたことを意味します。

なぜ起こるのか

  • 参照先のターゲットまたはキーが存在しません。 存在しない service / addon 名への参照、またはその addon が公開していないキーへの参照は、デプロイを失敗させる代わりに 空文字列 として解決されます。ビルドログには、空の参照ごとに理由付きの警告が出力されます。ビルドなしで再起動によって適用された変数変更では、警告は表示されません。lizard secrets set またはダッシュボードで設定した参照では、名前を変更したターゲットは存在しないものとして扱われます。これらの参照は現在の名前と照合されるためです。service のターゲットは、Lizard がそこに注入する DATABASE_URL や REDIS_URL を公開しません。代わりに addon を参照してください。
  • より高い優先順位のものに上書きされました。 値は固定順序でマージされます — addon-issued env < project secrets < project env < app env < app secrets < platform vars — そのため、project スコープの (--global) シークレットは、同じキーを持つ service スコープのシークレットに静かに隠されることがあります。また、プラットフォーム変数 (PORT, LIZARD_SERVICE_NAME, LIZARD_PROJECT_ID, LIZARD_PUBLIC_DOMAIN, LIZARD_PRIVATE_DOMAIN) は常に優先されます。自分で設定した PORT でルーティングが変わるのは、ポートが一度も設定されていないサービスだけです。lizard up で作成したサービスや、--port、lizard port、ダッシュボードでポートを設定したサービスでは、Lizard がその値を上書きします。ポートは lizard port <n> で変更してください。
  • ビルド時の値がビルドに渡っていません。 ほとんどの変数変更は再ビルド不要で適用され、サービスはそれらを取り込むために再起動されます。VITE_* と NEXT_PUBLIC_* の値はビルド済みアセットに埋め込まれ、lizard secrets set またはサービスの設定でこれらを変更すると、稼働中のサービスではすぐに再ビルドが始まります。ダッシュボードのプロジェクトの Secrets ページで編集した場合、再ビルドは始まりません。その時点でクラッシュまたは停止していたサービスはスキップされます。また、独自の dockerfilePath を持つサービスや、build/start コマンドなしで lizard up でアップロードされたサービスでは、これらの値がビルド時に渡されることはありません。

考えられる解決策

ビルドログで空の参照を確認する

サービスへのシェルアクセス (lizard ssh) は無効になっています。確認すべき場所はビルドログです。空の参照ごとに、==> Warning: ... is empty のような行が理由とともに出力されます。

lizard logs --build --service api

次に、addon のキーと、各サービスの LIZARD_* と PORT のキーを一覧表示し、名前とキーを自分のものと比較してください。ほかのサービス自身の変数とシークレットへの参照は機能しますが、一覧には表示されません。それらは lizard secrets list --service <target> で確認してください。キーについては addon のドキュメント化された変数を確認してください:

lizard secrets list --service api --ref

スコープの衝突を確認する

両方のスコープのシークレットを一覧し、比較してください。

lizard secrets list --service api --show
lizard secrets list --global --show

app secrets は project secrets を上書きする ことに注意してください。同じキーに service スコープの値が存在する場合、--global で設定したものよりそちらが優先されます。

ビルド時の変更後は再ビルドする

変更したキーが VITE_* または NEXT_PUBLIC_* で、変更時にサービスがクラッシュまたは停止していた場合、またはダッシュボードのプロジェクトの Secrets ページで変更した場合は、再ビルドを実行してください。

lizard redeploy --service api

ビルド時と実行時 および ビルド パイプライン → 再ビルドをトリガーするもの も参照してください。

関連項目

更新日