デプロイトラブルシューティングDockerfile の変更が反映されない

Dockerfile の変更が反映されていないようです

リポジトリに Dockerfile があり、それを編集したにもかかわらず、Lizard が実行するビルドがあなたの記述と一致しません。

これは何を意味するのか

プラットフォームは、リポジトリの Dockerfile が不完全だと判断し、あなたのものをそのまま使う代わりに lizardpack で再生成しました。

なぜこれが起こるのか

このチェックは GitHub ソースのサービスでのみ行われます。アップロード(lizard up)では、ルートの Dockerfile が常に記述どおりに使われます。

GitHub ソースでは、次の両方に当てはまる場合に、Lizard はルートの Dockerfile を不完全として扱います:

  • build、dist、out、.next、public のいずれかを末尾のスラッシュなしで COPY している(例: COPY dist /usr/share/nginx/html)。
  • npm、yarn、pnpm、bun、pip、pip3、bundle、cargo、go build、mvn、gradle のいずれかで始まる RUN 行がない。

Lizard はそれらのアーティファクトがイメージの外部でビルドされたと見なし、lizardpack が不足しているビルド手順を含む置き換え用 Dockerfile を生成します。

ほかに 2 つの設定でも、リポジトリのルートの Dockerfile は使われません。dockerfilePath が設定されている場合、Lizard はそのファイルを記述どおりに使います。設定されていない場合、buildCommand または startCommand が設定されていると、Lizard はそれらのコマンドから Dockerfile を合成します。

考えられる解決策

実際のビルド手順を追加する

Dockerfile をそのまま使いたい場合は、ビルド済み出力をコピーするのではなく、実際のビルド手順を追加してください。

RUN npm ci && npm run build

またはそのまま使用するよう強制する

dockerfilePath を設定してください。イメージのビルドではビルドコマンドと起動コマンドより優先されますが、startCommand が設定されていると、実行時には Dockerfile の CMD が置き換えられます。そのため、同じ更新で両方をクリアしてください。空の値を渡すとフィールドがクリアされます:

lizard service set api --set buildCommand= --set startCommand= --set dockerfilePath=Dockerfile

関連情報

これらのビルド項目を変更すると、ビルドが開始されることがあります。2 回目のビルドを開始しないよう、別の redeploy を送信する前に lizard events を確認してください。

更新日