アプリケーションのデプロイ時に何かしらのエラーが生じた場合、以下のようなエラーメッセージが表示されます。

アプリケーションでロールアウトエラーが発生しました。ドキュメントで対処法をご紹介しています。これを参考にしても問題が解決しない場合には、お気軽にカスタマーサポートまでお問い合わせください。

ビルドプロセス失敗(Build process failed.)
ビルドの不明なエラーが発生しました。(Unknown build fail type.)

ロールアウトプロセスがすぐに失敗した場合、またはビルドプロセスに失敗した場合、ポッドは作成されず、実行ログも生成されることはありません。主にウェブプロセスでの不正なstartコマンドが正しくないことが原因です(Dockerfileでビルドされたアプリケーションは、Dockerfileの正しくないENTRYPOINTも原因になります)。

ロールアウトプロセスが1~2分実行された後に失敗した場合も、通常ポッドと実行ログは作成されません。何かしらの誤りが原因で、プロセスが停止したことを意味します。この場合は、アプリケーションの実行ログを閲覧し、エラーメッセージを確認してください。エラーメッセージはアプリケーションのコードのバグを特定するのに役立ち、効率的に問題のデバッグを行うことができます。

以下にご紹介するトラブルシューティングを行った上で、エラーの原因を特定できない場合は、弊社カスタマーサポートまでお問い合わせください。

Gitリポジトリ

アプリケーションの正しいファイルが、すべてリポジトリに反映されていることを確認してください。

言語

 

アプリケーションを追加し、コンテナイメージの作成にNixpacksまたはビルドパックを選択すると、アプリケーション用のコンテナが自動的に検出、設定されます。また、Nixpacksまたはビルドパックを使用する場合は、アプリケーションのファイルに正しい言語バージョンが含まれていることを確認してください。言語バージョンの指定についてはこちらをご覧ください。

startコマンドとENTRYPOINT

アプリケーションは、ウェブプロセスのstartコマンド、またはENTRYPOINTによって起動します。これに誤りがある場合、アプリケーションは実行されません。このコマンドは、MyKinstaで確認可能です。

  • プロセス」>「ランタイムプロセス」>「ウェブプロセス
  • または「デプロイメント」>「履歴」に移動し、該当のアプリケーションを選択して、「デプロイメントの詳細」画面下に表示される「ロールアウトプロセス」の文字を見つけてください。
「デプロイメントの詳細」画面のロールアウトプロセス完了メッセージ
「デプロイメントの詳細」画面のロールアウトプロセス完了メッセージ
「デプロイメントの詳細」画面のロールアウトプロセス失敗メッセージ
「デプロイメントの詳細」画面のロールアウトプロセス失敗メッセージ

Dockerfileを使用してコンテナイメージをセットアップする場合は、コンテナの実行に、DockerfileでのENTRYPOINT指定が必要になります。アプリケーションのENTRYPOINTを指定する方法については、Dockerfileについての公式ドキュメントをご覧ください。

言語別コマンド例についてはこちらをご覧ください。

ビルドパスとDockerfileのコンテキスト

アプリケーションを追加する際は、Nixpackまたはビルドパックを使用してコンテナイメージを自動設定するか、Dockerfileを使用してコンテナイメージを設定するかを選択します。

  • ビルドパス:Nixpackとビルドパックにのみ適用され、アプリケーションのビルドに必要なファイルへのリポジトリ内のパスを意味します。一般的には、リポジトリルート(.)からビルドされますが、別のビルドパスがある場合は、このフィールドで指定してください。アプリケーションをサブディレクトリ(例:app)からビルドする場合は、このフィールドに「app」と入力します。これはモノレポを使用している場合にも便利です。
  • コンテキスト:Dockerfilesにのみ適用され、アプリケーションのビルドに必要なリポジトリ内のパスを意味します。一般的には、リポジトリルートからビルドされるため、その場合は、このフィールドにリポジトリルート(.)を入力してください。アプリケーションをサブディレクトリ(例:app)からビルドする場合は、このフィールドに「app」と入力します。

ビルドパスおよびDockerfileのコンテキストは、アプリケーションの「設定」画面で確認・変更可能です。

環境変数

環境変数は、アプリケーションに対してその外から情報を与えるものです。環境変数に誤りがあると、アプリケーション実行の妨げになることがあります。環境変数は、「設定」>「環境変数」で確認可能です。

アプリケーションの環境変数
アプリケーションの環境変数

この画面で、正しい環境変数が存在し、有効な値が含まれていることを確認します。環境変数の作成・確認の際には、以下の点に注意してください。

  • カンマ( , )はロールアウトプロセスで区切り文字として認識されるため、使用できません
  • 括弧を使用することはできません。デプロイ中に使用可能になるタイミングにもよりますが、ビルドまたはロールアウト処理に失敗する可能性があります。
  • 各キーはすべて一意で、一度しか使用できません。
  • エスケープされていない二重引用符(”)は無視されるか、ロールアウト処理の失敗の原因となります。

内部接続とビルドプロセス

内部接続はランタイム時に利用可能ですが、ビルドプロセス中に利用することはできません

この理由から、ビルドプロセス中にアプリケーションが内部接続でデータベースに接続しようすると、データベースが実行できないことを伝えるエラーが発生し、ビルドに失敗します。

これを回避するいくつかの方法があります。

方法1. データベースに接続するロジックをアプリケーションのビルドコマンドからstartコマンドに移動する。例)ビルドプロセスにprisma migrateのようなコマンドがあり、そのコマンドをstartコマンドに移動させると、アプリケーションは実行時にのみデータベースにアクセスするようになり、ビルドに成功します。

方法2. データベース接続に必要な環境変数を個別に追加し、1つはビルドプロセスで、もう1つはランタイムでのみ使用できるようにする。一方がビルドプロセス中にのみ、他方がランタイム時にのみ利用可能である限りは、同じキー(例: DB_CONNECTION_URL)でも問題ありません。ビルドプロセスで使用する変数の値は、データベースの外部接続の情報(MyKinstaで「アプリケーション」>(データベース名)>「補足」>「外部接続」)を使用します。

ポート

アプリケーションホスティングでは、ポート80と443のみ開かれています。アプリケーションでポートを開く場合は、8080を使用してください。

無効なパッケージ名

package.jsonの無効なパッケージ名は、エラーを引き起こすことがあるため、パッケージ名に「js」や「node」は使用しないでください。詳しくは、npmの公式ドキュメントをご覧ください。

関連ドキュメント