[英]errors parsing go.mod How to deploy go app on App Engine with Cloud build?
[英]gcloud app deploy cannot find app.yaml if go.mod is in a different directory
我已經無法將我的 Go 應用程序部署到 Google App Engine Flexible 一個星期了,盡管我不記得更改任何相關內容。 go.mod 和 go.sum 文件位於頂層目錄,而 app.yaml 位於./cmd/app/
中。
gcloud app deploy
上的錯誤消息:
Services to deploy:
descriptor: [/Users/me/go/src/github.com/me/project/cmd/app/app.yaml]
source: [/Users/me/go/src/github.com/me/project/cmd/app]
target project: [project-us-central1]
target service: [default]
target version: [20220118t234216]
target url: [https://project-us-central1.uc.r.appspot.com]
target service account: [App Engine default service account]
Do you want to continue (Y/n)?
Beginning deployment of service [default]...
ERROR: (gcloud.app.deploy) Required file is not uploaded: [app.yaml].
This file should not be added to an ignore list
(https://cloud.google.com/sdk/gcloud/reference/topic/gcloudignore)
(當然,app.yaml 從未出現在忽略列表中。)
我嘗試了以下方法:
.app.yaml
添加到.gcloudignore 文件.gcloudignore
文件gcloud config set gcloudignore/enabled false
gcloud
發布(Google Cloud SKD 368.0.0)。 請注意,這既發生在我現有的 Go 應用程序上,該應用程序在過去幾年(最后一次是 2021 年 11 月)成功部署了很多次,也發生在同一目錄結構下新創建的簡單 web 服務器應用程序上。 但是,如果我創建一個沒有 Go 模塊(go.mod,so.sum)的簡單應用程序, gcloud app deploy
將按預期工作。
我剛剛在發布此問題時找到了解決方法。 最初,這似乎有效:
gcloud app deploy --appyaml=app.yaml
但是,大約 30 分鍾后,部署總是失敗並出現以下錯誤:
Updating service [default] (this may take several minutes)...failed.
ERROR: (gcloud.app.deploy) Error Response: [13] The system encountered a fatal error
部署的版本似乎正在運行,但對於任何請求,它都會返回 HTTP 404。 在控制台中停止並重新啟動版本后,它仍然不起作用:它主要返回 HTTP 502,有時返回 HTTP 503 和“服務錯誤 -27”。 我可以在日志中看到 /readiness_check 調用都以 503 失敗, failReason:"null"
經過一番努力,事實證明問題在於./cmd/app/app.yaml
文件與./go.mod
和./go.sum
文件不在同一目錄中。
我的解決方法是在調用gcloud app deploy
之前暫時重命名go.mod
,然后在部署完成后將其移回。 這樣,一切都會再次正常運行。
我的解決方法是將 go.mod 和 go.sum 復制到運行 gcloud app deploy 命令的工作目錄。 這對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.