É possível usar qualquer pacote compatível com linux/amd64 com instâncias em execução no ambiente flexível do App Engine. Nestas instruções, pressupomos que você esteja usando o comando go get
para receber os pacotes diretamente de repositórios compatíveis, como GitHub, Bitbucket, LaunchPad e outros.
A partir da versão 1.22 do Go:
Não é possível usar
go get
fora de um módulo no modoGOPATH
legado (GO111MODULE
=off
). Para mais informações, consulte Ferramentas.O Go recomenda o uso de um arquivo
go.mod
para gerenciar dependências. Para instalar dependências durante a implantação, inclua um arquivogo.mod
na mesma pasta que o arquivoapp.yaml
. Para mais informações sobre versões do Go e como gerenciar dependências dos diretórios de fornecedores, consulte GOPATH e módulos.
Declarar e gerenciar dependências
Os aplicativos do Go são organizados em pacotes que espelham a estrutura de diretórios dos arquivos do seu código-fonte. Quando você usa uma declaração de importação, os caminhos relativos na importação são interpretados. Os caminhos de importação válidos são caminhos totalmente qualificados relativos ao subdiretório src
de todos os diretórios especificados em GOPATH
.
Por exemplo, considere um app de exemplo em que você define o seguinte:
Módulo
GOPATH
:export GOPATH=/home/fred/go.
Arquivo
src1-1.go
:import "foo/bar"
A CLI gcloud procura o pacote
foo/bar
no local/home/fred/go/src/foo/bar
quando você executa ou implanta o app.
Se você incluir fontes de pacotes em GOPATH
, é necessário tomar cuidado para não colocar o código-fonte no diretório do aplicativo, onde o app.yaml
está localizado. Se isso acontecer, problemas menores poderão ocorrer porque um pacote pode ser carregado duas vezes: uma vez para o caminho relativo ao diretório de um serviço e novamente para o caminho totalmente qualificado. Para evitar problemas, a CLI gcloud
verificará o diretório do app e o GOPATH
e, em seguida, informará um erro
se um conflito for detectado.
Para melhores resultados, estas são as nossas recomendações:
- Crie um diretório separado no diretório do app para cada serviço.
- O diretório de cada serviço precisa conter o arquivo
app.yaml
do serviço e um ou mais arquivos.go
. - Não inclua subdiretórios no diretório de um serviço.
- O
GOPATH
precisa especificar um diretório que esteja fora do diretório do app e conter todas as dependências importadas pelo app.
Fazer o download dos pacotes necessários
É possível usar o comando go get
para fazer download de pacotes. Por exemplo, para fazer o download de packagename
em my_repo
no GitHub:
go get github.com/my_repo/packagename
Implantar no App Engine
Para implantar o aplicativo no App Engine, é necessário implantar as bibliotecas necessárias pelo app junto com o código do aplicativo. Para ver os detalhes completos, consulte Como testar e implantar o aplicativo.