Node.jsでCloud Runにコンテナをデプロイする方法
この記事について
新しいバージョンの記事が投稿されています。
この記事では Buildpacks を使って作成したNode.jsのコンテナイメージを Cloud Run にデプロイする方法について紹介します。
おおまかな手順
おおまかな手順を下記に示します。
- コーディング
- コンテナイメージの作成
- デプロイ
- 動作確認
コーディング
下記のコマンドを実行してコーディングの準備をします。
mkdir column-cloudrun-nodejs
cd column-cloudrun-nodejs
touch main.js
touch package.json
エディタでmain.jsを開いて下記の内容を入力します。
ポイントを下記に示します。
- Webサーバーを生成しています。
- ポートの待ち受けを開始した時のイベントハンドラを登録しています。
- リクエストを受信した時のイベントハンドラを登録しています。
- エラーが発生した時のイベントハンドラを登録しています。
- 環境変数PORTで指定されたポートでリクエストの待ち受けを開始します。Cloud Runはコンテナが実行されるときにCloud Runによって自動的に指定されます。その他の要件については Container runtime contract のページに詳述されています。
続いてエディタでpackage.jsonを開いて下記の内容を入力します。
ポイントを下記に示します。
- startはコンテナ起動時に実行されるコマンドです。このコマンドだけはBuildpacksを使ってビルドするために必須であり、それ以外のコマンドはビルドの手順を簡単にするために登録しています。
- buildはコンテナイメージをビルドするコマンドです。Pack コマンドがインストールされている必要があります。
- imageはコンテナイメージの名称を出力するコマンドです。他のコマンドから呼び出されます。
- tagはコンテナイメージをプッシュするためにタグを付けるコマンドです。
- pushはコンテナイメージをプッシュするコマンドです。
- deployはコンテナをCloud Runにデプロイするコマンドです。
- stagingはビルドからデプロイまでのコマンドをまとめたコマンドです。
- deleteは後片付けのためのコマンドです。
- engines > nodeに明記することでBuildpacksでビルドする時のNode.jsのバージョンを指定することができます。
コンテナイメージの作成
下記のコマンドを実行してコンテナイメージを作成します。
npm run build
コマンドを実行するとビルドに必要なコンテナイメージの取得が開始します。
ビルドが終了すると「Successfully built image column-cloudrun-nodejs」とメッセージが表示されます。
デプロイ
下記のコマンドを実行してコンテナイメージをCloud Runにデプロイします。
npm run deploy
コマンドを実行するとService URLが表示されるので後の手順のために控えます。
動作確認
Webブラウザで先の手順で控えたService URLにアクセスして {"ok":true}
と表示されることを確認します。
動作確認が完了したら下記のコマンドを実行して後片付けをします。
npm run delete
コマンドを実行すると「Do you want to continue (Y/n)? 」と削除しても良いか尋ねられるのでエンターキーを入力します。
おわりに
この記事ではコンテナイメージのビルド/プッシュを手動で行いましたが、下記のコマンドを実行することでソースコードから自動でビルド/プッシュすることも可能です。
gcloud run deploy
また、この記事では割愛してしまいましたが Artifact Registry にDockerレポジトリを作成するのに加え、Dockerコマンドを実行して認証を行う必要があります。
認証の手順については 公式ドキュメント に詳しく記載されています。
Cloud Runは素晴らしいサービスだと思うのでこの記事がはじめて利用する方などの一助となれば幸いです。
最後まで読んでいただきありがとうございました!
Discussion