App Engine フレキシブル環境で実行されているインスタンスでは、任意の linux / amd64 互換パッケージを使用できます。以下の手順は、go get
コマンドを使用して GitHub、Bitbucket、LaunchPad などの対応リポジトリからパッケージを直接取得していることを前提としています。
依存関係の宣言と管理
Go アプリケーションは、ソースファイルのディレクトリ構造を反映するパッケージに編成されています。import ステートメントに指定されているパスは相対パスとして解釈されます。GOPATH
にあるすべてのディレクトリの src
サブディレクトリに関連する完全修飾パスが有効なインポートパスになります。
たとえば、GOPATH
が次のように定義されているとします。
export GOPATH=/home/fred/go
サンプルアプリのディレクトリにある src1-1.go
ファイルに、次の import ステートメントが含まれているとします。
import "foo/bar"
この場合、アプリを実行またはデプロイするときに、gcloud CLI は次の場所で foo/bar パッケージを探します。
/home/fred/go/src/foo/bar
GOPATH
にパッケージ ソースを含める場合は、app.yaml
ファイルがあるアプリのディレクトリ以下にソースコードを配置しないように注意してください。この位置に配置すると、パッケージが 2 回、つまりサービス ディレクトリの相対パスに対して 1 回、完全修飾パスに対して 1 回読み込まれ、問題が発生することがあります。問題を回避するため、gcloud CLI はアプリのディレクトリと GOPATH
の両方をスキャンし、検出した競合をエラーとして報告します。
最良の結果を得るため、次のことをおすすめします。
- アプリのディレクトリの下に、サービスごとに別々のディレクトリを作成します。
- 各サービスのディレクトリには、サービスの
app.yaml
ファイルと 1 つ以上の.go
ファイルを含めます。 - サービス ディレクトリにサブディレクトリを作成してはなりません。
GOPATH
には、アプリのディレクトリの外にあり、アプリがインポートするすべての依存関係が含まれているディレクトリを指定する必要があります。
必要なパッケージのダウンロード
パッケージをダウンロードするには、go get
コマンドを使用します。たとえば、GitHub my_repo
から packagename
をダウンロードするには、次のコマンドを実行します。
go get github.com/my_repo/packagename
App Engine へのデプロイ
アプリケーションを App Engine にデプロイするには、アプリで必要とされるライブラリとアプリケーション コードを一緒にデプロイする必要があります。 詳細については、アプリケーションのデプロイをご覧ください。