Os aplicativos executados no ambiente de execução padrão do Go 1.11 podem usar qualquer pacote compatível com linux/amd64.
Como usar os módulos do Go
Recomendamos que você use módulos Go para gerenciar dependências no app Go, mas será possível continuar usando o modo GOPATH mais antigo se não estiver pronto para migrar para módulos Go.
Quando você implanta o aplicativo, o App Engine usa o comando go build para
criar o aplicativo e, portanto, corresponde ao comportamento do Go. Para garantir que o aplicativo
use o modo de reconhecimento de módulo, faça o seguinte
no ambiente de desenvolvimento:
Crie o arquivo
go.moddo módulo no mesmo diretório que seu arquivoapp.yaml. O App Engine pesquisa o diretório atual e, em seguida, os diretórios pai sucessivos até encontrar um arquivogo.mod.Se o Google App Engine não encontrar um arquivo
go.mod, ele seguirá o modo GOPATH.Se você configurar a variável de ambiente
GO111MODULE, certifique-se de que o valor da variável ative o modo de reconhecimento de módulo. Quando você implanta o aplicativo, o App Engine verifica o ambiente paraGO111MODULEe corresponde ao próprio comportamento do Go. O App Engine só aplicará a configuração da variávelGO111MODULEse você tiver incluído um arquivogo.modpara o aplicativo.
- Não coloque o diretório do seu app em
$GOPATH/srcou abaixo dele. Se o aplicativo estiver em qualquer lugar na árvore de diretórios$GOPATH/src, o App Engine seguirá o modo GOPATH, mesmo que você tenha definido um arquivogo.modpara o aplicativo.
Como usar dependências privadas
O App Engine não pode fazer o download das dependências particulares durante o processo de criação. Portanto, você precisa incluí-las com o código do aplicativo na implantação.
Você precisará usar a diretiva replace no arquivo go.mod para declarar
dependências particulares. O exemplo a seguir supõe que seu aplicativo esteja no
diretório /myapp/:
Altere para o diretório do aplicativo:
cd /myappCrie um diretório contendo suas dependências particulares:
mkdir privateVerifique se a dependência particular está no diretório
private. Uma abordagem é criar um link simbólico:mkdir private/private.example.com ln -s /path/to/private.example.com/foo private/private.example.com/fooAtualize o arquivo
go.modpara usar a diretivareplacee usar o diretórioprivatepara sua dependência:go mod edit -replace=private.example.com/foo=./private/private.example.com/fooSeu arquivo
go.modterá esta aparência:Arquivo
go.modfinalmodule private.example.com/myapp require private.example.com/foo v1.2.3 replace private.example.com/foo => ./private/private.example.com/fooArquivo
go.modoriginalmodule private.example.com/myapp require private.example.com/foo v1.2.3Não modifique o modo de importação e uso do pacote particular. Sua instrução
importdeve ser semelhante a:import "private.example.com/foo"Para incluir a dependência particular na implantação, implante o aplicativo:
gcloud app deploy