LoginSignup
3
4

なにもやってないのにgcloud run deployが通らなくなった

Last updated at Posted at 2024-05-15

何もやってないっていうときは何かやってんだよなぁー

エラー概要(読む必要なし)

今までずっとgcloud run deploy --sourceでデプロイが通っていたnode.js環境で、
ある日突然エラーが出て通らなくなった。
リポジトリ上のソースは一切変更なし。

ERROR: (gcloud.run.deploy) Revision 'イメージ名' is not ready and cannot serve traffic. The user-provided container failed to start and listen on the port defined provided by the PORT=8080 environment variable. Logs for this revision might contain more information.

ポートが開いてないといわれているが、この手のエラーの場合大体ポートは関係ない。

ログを見に行こう
⇒何の情報もない同じような以下のログがあるだけ

Default STARTUP TCP probe failed 1 time consecutively for container "コンテナ名" on port 8080. The instance was not started.

き・・・きっとビルドのほうでエラーが出てるのさ!
⇒成功してる
image.png
OMG...

gcloud run deployの公式ドキュメントを確認する
https://cloud.google.com/run/docs/quickstarts/build-and-deploy/deploy-nodejs-service?hl=ja
うーん・・・package.jsonの書き方も大体同じだよなぁ・・・
↓公式のpackage.json例

{
  "name": "helloworld",
  "description": "Simple hello world sample in Node",
  "version": "1.0.0",
  "private": true,
  "main": "index.js",
  "type": "module",
  "scripts": {
    "start": "node index.js"
  },
  "engines": {
    "node": ">=16.0.0"
  },
  "author": "Google LLC",
  "license": "Apache-2.0",
  "dependencies": {
    "express": "^4.17.1"
  }
}

--snip--
ネット情報や色々彷徨うこと1時間・・・
StackOverflowに同エラー報告あるものの別原因か未解決
--snip--

ビルダーのドキュメントも見る
https://cloud.google.com/docs/buildpacks/builders?hl=ja
image.png
ん・・・まさか?
いや、でも公式のpackage.jsonと公式のビルダーでそんなはずは?

ビルドのログを見直す

成功時
image.png

失敗時
image.png

!!!

解決策

package.jsonのnodeのバージョン指定部分をビルダー対応バージョンに変更

  "engines": {
    "node": "20.x"
  },

敗因と言い訳(読む必要なし)

  1. 「なにもやってない」はなんかやっている。
    (リポジトリのソースは変わらなくてもnpm installでnodeバージョン上がっている)
  2. 特にちゃんとしたPJじゃなかったのでdockerfileサボって--sourceオプションでやっていたこと
    (でもそれって僕が悪いんですかね!)
  3. 公式のpakage.jsonが">="でバージョン指定してるから・・・
  4. ビルダーのほうで自分の対応バージョンくらい見てなんかしてくれてもいいじゃん・・・せめてエラーログとかをさ・・・
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4