AWSのCode三兄弟を使ってEC2にAngular Universalアプリケーションをデプロイする
やりたいこと
Githubのリポジトリでdevelopブランチが更新されたのをトリガーに
CodeBuildでAngular Universalアプリをビルドし
CodeDeployでEC2へのソース配布とアプリ再起動を行う
手順
1. CodePipelineでパイプライン作成
2. CodeBuildのビルドプロジェクト作成
3. CodeDeployアプリケーションの作成
4. デプロイ先のEC2インスタンスの設定
詳しく
1. CodePipelineでパイプライン作成
2. CodeBuildのビルドプロジェクト作成
3. CodeDeployアプリケーションの作成
Code兄弟の設定だいたいは前に書いたのと同じ
CodeBuildのDockerレジストリをnode:10.16-alpineに変えるくらい
buildspec.yml
version: 0.2
phases:
build:
commands:
- echo Build started on `date`
- npm install
- npm run build:ssr
post_build:
commands:
- echo Build completed on `date`
- cp deploy/appspec.yml appspec.yml
artifacts:
files:
- dist/**/*
- appspec.yml
cache:
paths:
- '/root/.npm/**/*'
/.npm以下をローカルキャッシュしておく
appspec.yml
version: 0.0
os: linux
files:
- source: dist
destination: /opt/my-app/dist
4. デプロイ先のEC2インスタンスの設定
4.1. node.jsのインストール
nodeのバージョンマネジャーも入れといたほうがいい
LTSを使う
$ nvm install --lts
$ nvm use --lts
4.2. PM2でアプリケーションをデーモン化する
pm2のインストール
pm2の自動起動設定
$ npm install pm2 -g
$ cd /opt/my-app
$ pm2 start dist/server --name my-app --watch # watchしておけば、今後デプロイされて内容変わったら自動で再起動かかる
$ pm2 startup # サーバー再起動時にpm2が自動的に起動するようにしておく
$ pm2 save