O ambiente de execução do Go

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.

Versões do Go

O Go 1.23 (pré-lançamento) usa buildpacks. 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.

Para usar um versão compatível do Go:

  • 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.
    
    
  • Inclua as configurações runtime_config e operating_system no arquivo app.yaml para especificar um sistema operacional.

  • 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.23 (pré-lançamento) no Ubuntu 22:

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: "1.23"
    
  • 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.

Escolher o Go 1.23 (pré-lançamento) no arquivo app.yaml resulta na versão patch mais recente do Go 1.23 (pré-lançamento) disponível.

  runtime: go
  env: flex

  runtime_config:
      operating_system: "ubuntu22"
      runtime_version: "1.23"

Consulte a referência app.yaml para mais informações.

Versões anteriores do ambiente de execução

Para usar a versão 1.15 e anterior do Go, especifique uma versão em runtime usando o formato go1.x no arquivo app.yaml. 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

Suporte para outros ambientes de execução Go

Se você precisa usar uma versão do Go que não é compatível, crie um ambiente de execução personalizado e selecione uma imagem de base válida com a versão Go necessária.

Para imagens de base fornecidas pelo Google ou imagens de base do Docker Go, consulte Como criar ambientes de execução personalizados.

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.