在 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