指定依附元件

您可以將任何與 linux/amd64 相容的套件與 App Engine 彈性環境中執行的執行個體搭配使用。在下列的操作說明中,我們假設您是使用 go get 指令直接從支援的存放區取得套件,像是 GitHub、Bitbucket、LaunchPad 等。

自 Go 1.22 以上版本開始:

  • 您無法在舊版 GOPATH 模式 (GO111MODULE=off) 中使用模組以外的 go get。詳情請參閱「工具」。

  • Go 建議您使用 go.mod 檔案來管理依附元件。如要在部署期間安裝依附元件,請在 app.yaml 檔案所在的資料夾中加入 go.mod 檔案。如要進一步瞭解 Go 版本,以及如何管理供應商目錄的依附元件,請參閱「GOPATH 和模組」。

宣告及管理依附元件

Go 應用程式會整理成若干套件,套件的目錄結構與來源檔案相同。當您使用 import 陳述式時,系統會解譯 import 的相對路徑。有效的 import 路徑是格式完整的路徑,且對應於 GOPATH 中所有指定目錄的 src 子目錄。

舉例來說,請考慮以下範例應用程式,其中定義了以下內容:

  • GOPATH 模組:

     export GOPATH=/home/fred/go.
    
  • src1-1.go 檔案:

    import "foo/bar"
    
  • 當您執行或部署應用程式時,gcloud CLI 會在 /home/fred/go/src/foo/bar 位置尋找 foo/bar 套件。

如果您在 GOPATH 加入套件來源,則必須留意,不要將原始程式碼放在 app.yaml 檔案所在的應用程式目錄之中。如果您這樣做,可能會發生一些小問題,因為系統可能會載入套件兩次,一次針對服務目錄的相對路徑載入,一次針對完整路徑載入。為避免發生問題,gcloud 命令列會同時掃描應用程式目錄和 GOPATH,如果偵測到衝突,即回報錯誤。

為獲得最佳結果,建議您採取下列做法:

  • 在應用程式的目錄中為每項服務建立獨立的目錄。
  • 每個服務的目錄都應該包含服務的 app.yaml 檔案以及一或多個 .go 檔案。
  • 請勿在服務目錄中加入任何子目錄。
  • GOPATH 應指定不在應用程式目錄中且包含應用程式匯入的所有依附元件的目錄。

下載必要套件

您可以使用 go get 指令下載套件。例如,如要從 GitHub my_repo 下載 packagename,請執行以下指令:

go get github.com/my_repo/packagename

部署至 App Engine

如要將應用程式部署到 App Engine,您必須部署應用程式所需的程式庫以及應用程式的程式碼。詳情請參閱「測試及部署應用程式」。