ローカル
イメージを作ってから、docker run -p 8080:8080 {Image ID}
コンテナ イメージをローカルでテストする | Cloud Run のドキュメント | Google Cloud
実装(JS)
コンテナ ランタイムの契約に記載されているように、コンテナは、Cloud Run によって定義され、PORT 環境変数で指定されているポートで受信リクエストをリッスンする必要があります。
Cloud Run のトラブルシューティング(フルマネージド) | Cloud Run のドキュメント | Google Cloudより引用
リクエストをリッスンすることをお忘れなく。
constexpress=require('express');constapp=express();constport=process.env.PORT||8080;app.listen(port,()=>{console.log('Hello world listening on port',port);});
デプロイ
手順
- イメージ作成、プッシュ
- デプロイコマンド実行
Cloud Run を使用した動的コンテンツの配信とマイクロサービスのホスティング | Firebase
イメージ作成
docker build -t gcr.io/{PROJECT_ID}/js-cloud-run .
docker push gcr.io/{PROJECT_ID}/js-cloud-run
コマンドでのデプロイ
gcloud run deploy js-cloud-run \--image gcr.io/yojo-linebot-test/js-cloud-run \--port 8080 \--platform managed \--region asia-northeast1 \ # リージョン--allow-unauthenticated--revision-suffix v1 # つけたいrevisionの名前をつける
リビジョンに名前をつけてデプロイしたい場合は、--revision-suffix
を指定します。
このコマンドで付与した revison
には、デプロイ完了時点では、トラフィックは飛ばないようになっています。
トラフィックの割合をコマンドで管理したい場合は、gcloud run services update-traffic
コマンドに --to-revisions
オプションを付与することで実行できそう。
サンプルコマンドgcloud run services update-traffic myservice --to-revisions=myservice-s5sxn=10,myservice-cp9kw=90
gcloud run services update-traffic | Cloud SDK のドキュメント | Google Cloud
ブルーグリーンデプロイメント
Cloud Runでは、下記のように設定することで、トラフィックの分割を容易に実施することができます。
ロールバック、段階的なロールアウト、トラフィックの移行 | Cloud Run のドキュメント | Google Cloud
TODO
- ホットリロード環境の構築
- Cloud Run の CI/CDパイプライン構築