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.

  • A versão 1.18 e as mais recentes são criadas com buildpacks, que exigem a escolha de um sistema operacional no arquivo app.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.