在 Go 1.11 標準執行階段中執行的應用程式,可以使用任何與 linux/amd64 相容的套件。
使用 Go 模組
我們建議您使用 Go 模組管理 Go 應用程式中的依附元件,但如果您尚未準備好遷移至 Go 模組,可以繼續使用舊版 GOPATH 模式。
部署應用程式時,App Engine 會使用 go build 指令建構應用程式,因此會與 Go 本身的行為相符。如要確保應用程式使用模組感知模式,請在開發環境中執行下列操作:
在
app.yaml檔案所在的目錄中,建立模組的go.mod檔案。App Engine 會搜尋目前目錄,然後依序搜尋上層目錄,直到找到go.mod檔案為止。如果 App Engine 找不到
go.mod檔案,就會採用 GOPATH 模式。如果您設定了
GO111MODULE環境變數,請確認變數值是否已啟用模組感知模式。部署應用程式時,App Engine 會檢查環境中的GO111MODULE,並比對 Go 本身的行為。只有在您為應用程式加入go.mod檔案時,App Engine 才會套用GO111MODULE變數設定。
- 請勿在
$GOPATH/src中或下方尋找應用程式目錄。如果應用程式位於$GOPATH/src目錄樹狀結構中的任何位置,即使您已為應用程式定義go.mod檔案,App Engine 仍會採用 GOPATH 模式。
使用私人依附元件
App Engine 無法在建構程序期間下載私有依附元件,因此您必須在部署時將這些元件與應用程式程式碼一併納入。
您需要在 go.mod 檔案中使用 replace 指令,宣告私有依附元件。以下範例假設您的應用程式位於 /myapp/ 目錄中:
切換至應用程式目錄:
cd /myapp建立包含私有依附元件的目錄:
mkdir private確認私人依附元件位於
private目錄。其中一種方法是建立符號連結:mkdir private/private.example.com ln -s /path/to/private.example.com/foo private/private.example.com/foo更新
go.mod檔案,使用replace指令將private目錄用於依附元件:go mod edit -replace=private.example.com/foo=./private/private.example.com/foo您的
go.mod檔案現在應如下所示:最終
go.mod檔案module private.example.com/myapp require private.example.com/foo v1.2.3 replace private.example.com/foo => ./private/private.example.com/foo原始
go.mod檔案module private.example.com/myapp require private.example.com/foo v1.2.3請勿修改私有套件的匯入和使用方式。您的
import陳述式應如下所示:import "private.example.com/foo"部署應用程式,將私人依附元件納入部署作業:
gcloud app deploy