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.mod
do 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 paraGO111MODULE
e corresponde ao próprio comportamento do Go. O App Engine só aplicará a configuração da variávelGO111MODULE
se você tiver incluído um arquivogo.mod
para o aplicativo.
- Não coloque o diretório do seu app em
$GOPATH/src
ou 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.mod
para 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 /myapp
Crie um diretório contendo suas dependências particulares:
mkdir private
Verifique 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/foo
Atualize o arquivo
go.mod
para usar a diretivareplace
e usar o diretórioprivate
para sua dependência:go mod edit -replace=private.example.com/foo=./private/private.example.com/foo
Seu arquivo
go.mod
terá esta aparência:Arquivo
go.mod
finalmodule private.example.com/myapp require private.example.com/foo v1.2.3 replace private.example.com/foo => ./private/private.example.com/foo
Arquivo
go.mod
originalmodule private.example.com/myapp require private.example.com/foo v1.2.3
Não modifique o modo de importação e uso do pacote particular. Sua instrução
import
deve ser semelhante a:import "private.example.com/foo"
Para incluir a dependência particular na implantação, implante o aplicativo:
gcloud app deploy