AWS
バックエンドがLaravel、フロントエンドがVue.jsで、InertiajsのSSRの機能を利用して動作させるアプリケーションのafter installイベントがいつまでたっても終わらなかった。
appspec.ymlファイル内でafter installイベントで実行させるシェルファイルで
php artisan inertia:start-ssr
を実行していたこと。
このコマンドはInertiajsを利用したLaravel、Vue.jsアプリケーションをSSRにして実行してくれるものだが、継続的に実行を行うタイプのコマンド。
CodeDeployはコマンドの終了を永遠に待つため、バックグラウンドで実行させる必要がある。
単純に&を使えばいいわけではない。
php artisan inertia:start-ssr &
上記の場合デフォルトの 1 時間のデプロイライフサイクルイベントのタイムアウト期間まで、デプロイが保留状態のままになり、タイムアウトが過ぎると、 CodeDeploy AfterInstall 以前と同様にアプリケーションのライフサイクルイベントでデプロイが停止して失敗します。
こちらを参考に以下のように記述することで動作する。
php artisan inertia:start-ssr > /dev/null 2> /dev/null < /dev/null &
php artisan inertia:start-ssr
をバックグラウンドで実行し、stdout、stderr、および stdin を /dev/null
にリダイレクトさせている。