O ambiente de execução do Go é a pilha de software responsável por instalar o código e as dependências do aplicativo e executá-lo no ambiente flexível.
A versão
1.18
e as mais recentes são criadas com buildpacks, que exigem a escolha de um sistema operacional no arquivoapp.yaml
. Por exemplo, para usar o Go 1.22, você precisa especificar o Ubuntu 22 como o sistema operacional.A versão
1.15
e anteriores são criadas usando o Docker.
Para ver a lista completa de versões do Go com suporte e a versão correspondente do Ubuntu, consulte a Programação de suporte ao ambiente de execução.
Escolher uma versão do Go
Novas versões de ambiente de execução
Para o ambiente de execução do Go versão 1.18 e mais recentes, inclua as
configurações runtime_config
e operating_system
no
app.yaml
para especificar um sistema operacional.
Para usar os novos ambientes de execução, instale o gcloud CLI
versão 420.0.0 ou posterior. É possível atualizar as ferramentas da CLI executando o comando gcloud components update
. Para conferir a versão instalada, execute o comando gcloud version
.
O Go recomenda o uso de um arquivo go.mod
para gerenciar dependências.
Para instalar dependências durante a implantação, inclua um arquivo go.mod
na mesma pasta que
o arquivo app.yaml
.
Por exemplo, a estrutura de pastas do aplicativo com go.mod
precisa representar:
<application-root>/
--> app.yaml
--> go.mod
--> Other source files used in your application.
Como alternativa, é possível especificar uma versão de ambiente de execução incluindo a configuração runtime_version
em app.yaml
. Por padrão, a versão mais recente do Go será usada se
a configuração runtime_version
não for especificada.
Exemplos
Para especificar o Go 1.22 no Ubuntu 22, siga as etapas a seguir:
runtime: go env: flex runtime_config: operating_system: "ubuntu22" runtime_version: "1.22"
Para especificar a versão mais recente compatível do Go no Ubuntu 22:
runtime: go env: flex runtime_config: operating_system: "ubuntu22"
O app usa a versão estável
mais recente especificada no arquivo app.yaml
. O App Engine é atualizado automaticamente para novas revisões de patch, mas não atualiza automaticamente a versão principal.
Por exemplo, seu aplicativo pode ser implantado no Go 1.18.10 e, posteriormente, pode ser atualizado automaticamente para o Go 1.18.11, mas não será atualizado automaticamente para a versão principal do Go 1.19.
Selecionar Go 1.22 no arquivo app.yaml
resulta na
versão patch
mais recente do Go 1.22 disponível.
runtime: go
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: "1.22"
Consulte a referência app.yaml
para mais informações.
Versões anteriores do ambiente de execução
Para o Go versão 1.15 e anteriores, especifique uma versão usando o formato go1.x
no arquivo de configuração app.yaml
como
runtime: go1.x
:
Exemplo
runtime: go1.14 env: flex
Se nenhuma versão for especificada, a versão padrão do go1.11
será selecionada
automaticamente.
O app usa a versão estável
mais recente especificada no arquivo app.yaml
. O App Engine é atualizado automaticamente para novas revisões de patch, mas não atualiza automaticamente a versão principal.
Por exemplo, seu aplicativo pode ser implantado no Go 1.14.10 e, posteriormente, pode ser atualizado automaticamente para o Go 1.14.11, mas não será atualizado automaticamente para a versão principal do Go 1.15.
Escolher a versão go1.15
do ambiente de execução Go no arquivo app.yaml
resulta
na versão mais recente disponível da 1.15, por exemplo, 1.15.15.
runtime: go1.15 env: flex
Importar pacotes
O código é compilado quando você implanta o aplicativo no App Engine. Quando você executa o comando de implantação, as dependências do app são coletadas primeiro do GOPATH
local e, em seguida, todas elas são enviadas para o servidor do build. Todas as dependências
não encontradas, como bibliotecas de terceiros, resultam em falhas da versão.
Para evitar falhas na versão e garantir que todas as dependências do app sejam implantadas com o código, você precisa testar localmente o app antes de implantá-lo.
Como ampliar o tempo de execução
Para instruções sobre como estender e personalizar o ambiente de execução do Go, leia o construtor do ambiente de execução do Go no GitHub (em inglês).
Servidor de metadados
Cada instância do aplicativo pode usar o servidor de metadados do Compute Engine para consultar informações sobre a instância, inclusive o nome do host, o endereço IP externo, o código da instância, os metadados personalizados e as informações da conta de serviço. Não é possível definir metadados personalizados para cada instância no App Engine. Em vez disso, defina metadados personalizados para o projeto e leia esses metadados a partir das instâncias do Engine e do Compute Engine.
Use o pacote
cloud.google.com/go/compute/metadata
para acessar o servidor de metadados.