前回は、Laravel/nginxでcopilotを実行するためにローカルでの動作確認を行い、いざcopilotでサービスのデプロイをまずはphp8/Laravelのサービスだけ単体で行ったのですが、エラーが発生してやめたところでした。
今回はエラーを確認していきたいと思います。
まずcopilot svc deployを実行すると以下のような画面で失敗し続けて、おそらく10回失敗するとスタックがロールバックしてcleanupされる挙動になるかと思います。
前回にも載せましたがコマンドを実行したターミナルで表示されていたのは以下になります。
10回失敗した後に以下のエラー出力もありました。
Cloudformationにも同じエラーがでています。
CREATE_FAILED
Resource handler returned message: "Error occurred during operation 'ECS Deployment Circuit Breaker was triggered'." (RequestToken: Token, HandlerErrorCode: GeneralServiceException)
ROLLBACK_IN_PROGRESS
The following resource(s) failed to create: [Service]. Rollback requested by user.
ぱっと見何が原因かわからなかったんですが、何回かやっていて、おおよそコンテナが起動できないとか、サービスのmanifestでミスっていることで起きていた感じでした。
今回で言うと原因はちょっと初めからわかっていたのですが、、
私の環境はM1チップのmacbook airなので、Laravelをインストールするphpの公式イメージはarm64v8/phpのイメージを使っていたんですね、しかし実際にcopilotで起動する場合はintelのイメージじゃないとダメだ!って気付きました。
と言うことで
FROM amd64/php:latest
こちらに変更して再度実行しました。
※ここですがサービスのmanifestで platform: linux/arm64にすればarm64v8/phpでも動作します。後から気づきました。
結果はこちらになりました!
こんな感じでRunningになって、アクセスできるLBのAレコードが発行されて出力されているのでアクセスするとこんな感じでLaravelのデフォルトページにアクセスを確認できました。
ただ、今回の実行ではphp8/Laravelの8000番で待ち受けて、ロードバランサーが80番で受けたリクエストをphp8/Laravelの8000番に流して受け取ったレスポンスをブラウザに返しているだけですので、LB→nginx→php8/Laravelというサイドカーを利用した構造にしたいと思います。
コメント
コメントを投稿