2 回答

TA貢獻1876條經驗 獲得超5個贊
我已經為遇到同樣問題的其他人提供了解決方案。一些事實似乎存在,盡管文檔對此有些模棱兩可。文檔說:
Create your module's go.mod file in the same directory as your app.yaml file. App Engine searches the current directory, then successive parent directories until it finds a go.mod file.
但這似乎不是真的,事實上,app.yaml 文件上方似乎根本沒有復制任何內容。
所以解決方案需要:
每個微服務都有自己的 go.mod 文件。
該 go.mod 文件與 app.yaml 位于同一目錄中
go mod edit
用于告訴 Go 編譯器在本地查找,而不是嘗試通過 Internet 獲取。供應商用于將所有依賴項捆綁在與 app.yaml 相同的目錄中,以便將它們部署到 AppEngine。
關于本地進口的一點
Go 似乎首先在依賴項緩存/路徑中查找所有內容,然后完全在 Internet 上查找。如果我使用創建本地包go mod init shared
,則其模塊名稱為“共享”。要告訴 Go 你想在本地導入而不是使用互聯網,調用go mod edit -replace=shared=../../shared/
,你應該看到你的 go.mod 得到一個類似的行replace shared => ../../shared
。如果您使用的是 Goland,但仍然無法編譯,請嘗試File>Invalidate Caches/Restart...
關于供應商的一些信息
go mod vendor
在您的 go.mod 文件夾中將捆綁所有依賴項,包括本地依賴項,以便它們可以由 AppEngine 部署。這也是處理私有存儲庫的好方法,因此您無需通過 git Cloud Build 訪問您的存儲庫。

TA貢獻1854條經驗 獲得超8個贊
回答您的問題:
AppEngine 部署如何工作?
您的源文件已上傳到 Google Cloud Storage。Cloud Build 構建您的應用并將其部署到 App Engine。
如何讓 AppEngine 部署找到我的 go.mod 文件?
您將模塊的 go.mod 文件放在與 app.yaml 文件相同的目錄中。
依賴項是如何捆綁的?
它確實在運行 Cloud Build。App Engine 無法在構建過程中下載您的私有依賴項,因此您必須在部署時將它們包含在您的應用程序代碼中。詳細信息可在“指定依賴項”文檔頁面的使用私有依賴項段落中找到。
關于重構文件結構:文件結構需要遵守結構化文件段落中給出的規定:
go-app/:Go 1.11 服務的目錄。
app.yaml:你的服務的配置設置。
main.go:您的應用程序代碼。
- 2 回答
- 0 關注
- 172 瀏覽
添加回答
舉報