zeabur-startup-order について
zeabur-startup-order は、データベースや Redis の準備前にアプリが起動して失敗する Zeabur のデプロイを調査するスキルです。依存サービスのヘルスチェックや起動コマンドの待機処理で、起動順序の問題に対処します。
主な機能
- 01依存サービスの準備状態エラーを特定
- 02データベースの TCP ヘルスチェック設定
- 03Redis の TCP ヘルスチェック設定
- 04起動コマンドに待機ループを追加
- 05失敗したサービスを再起動
活用シーン
- 01データベース接続拒否の調査
- 02Redis の準備前にアプリが起動する事態の防止
- 03依存サービス未準備で失敗したサービスの復旧
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ zeabur/ agent-skills --skill zeabur-startup-orderインストール後、Claude Code で/zeabur-startup-orderを入力して読み込まれたか確認します。
詳細
Zeabur の起動順序に関する問題
Zeabur CLI の実行には、必ず
npx zeabur@latestを使用してください。zeaburを直接実行したり、ほかのインストール方法を使用したりしないでください。npxが利用できない場合は、先に Node.js をインストールしてください。
症状
Connection refused :5432
connection to server at "X" failed
OperationalError: connection failed
原因
依存サービス(DB/Redis)の準備が整う前に、サービスが起動しています。dependencies で保証されるのはコンテナーの起動順序のみであり、サービスが接続を受け付けていることまでは保証されません。
修正方法(推奨):依存サービスに healthCheck を設定する
データベース/Redis サービスに healthCheck を追加すると、ポートが接続を受け付ける状態になるまで Zeabur が待機してから、依存するサービスを起動します。アプリのコマンドを変更する必要はありません。
テンプレートの YAML を編集します(YAML のリファレンスには zeabur-template スキルを使用してください)。
- name: postgresql
spec:
ports:
- id: database
port: 5432
type: TCP
healthCheck:
type: TCP
port: database # references the port ID above
- name: redis
spec:
ports:
- id: database
port: 6379
type: TCP
healthCheck:
type: TCP
port: database
修正方法(代替):コマンドに待機ループを追加する
テンプレートを変更できない場合(zeabur-template スキルを使用してください)、アプリのコマンドに待機処理を追加します(コマンドは必ず source の中に記述してください)。
spec:
source:
image: myapp:latest
command:
- /bin/sh
- -c
- "until nc -z postgres 5432; do sleep 1; done && node server.js"
すぐにできる修正
DB の準備が整っている場合は、失敗したサービスを再起動するだけで解決します。
npx zeabur@latest service restart --id <service-id> -y -i=false
問題が起動順序ではなく、データベースのマイグレーションにおける待機ループに関するものの場合は、zeabur-migration スキルを使用してください。