Entorno de ejecución de Go

El tiempo de ejecución de Go es la pila de software encargada de instalar el código de tu aplicación y sus dependencias, y de ejecutarla en el entorno flexible.

Versiones de Go

Go 1.25 usa buildpacks. Para ver la lista completa de versiones de Go admitidas y sus versiones de Ubuntu correspondientes, consulta la programación de asistencia del tiempo de ejecución.

Para usar una versión de Go compatible, debes hacer lo siguiente:

  • Instala la versión 420.0.0 o una posterior de gcloud CLI. Puedes actualizar las herramientas de la CLI ejecutando el comando gcloud components update. Para ver la versión instalada, puedes ejecutar el comando gcloud version.

  • Go recomienda usar un archivo go.mod para gestionar las dependencias. Para instalar las dependencias durante la implementación, incluye un archivo go.mod en la misma carpeta que el archivo app.yaml.

    Por ejemplo, la estructura de carpetas de tu aplicación con go.mod debe representar lo siguiente:

    <application-root>/
    --> app.yaml
    --> go.mod
    --> Other source files used in your application.
    
    
  • Incluya los ajustes runtime_config y operating_system en el archivo app.yaml para especificar un sistema operativo.

  • También puedes especificar una versión del entorno de ejecución incluyendo el ajuste runtime_version en tu app.yaml. De forma predeterminada, se usa la versión más reciente de Go si no se especifica el ajuste runtime_version.

Ejemplos

  • Para especificar Go 1.25 en Ubuntu 22, sigue estos pasos:

    runtime: go
    env: flex
    
    runtime_config:
        operating_system: "ubuntu22"
        runtime_version: "1.25"
    
  • Para especificar la última versión compatible de Go en Ubuntu 22, haz lo siguiente:

      runtime: go
      env: flex
    
      runtime_config:
          operating_system: "ubuntu22"
    

Tu aplicación usa la última versión estable de la versión especificada en el archivo app.yaml. App Engine se actualiza automáticamente a las nuevas revisiones de parches, pero no actualiza automáticamente la versión principal.

Por ejemplo, tu aplicación puede estar desplegada en Go 1.18.10 y, más adelante, actualizarse automáticamente a Go 1.18.11, pero no se actualizará automáticamente a la versión principal Go 1.19.

Si eliges Go 1.25 en tu archivo app.yaml, se usará la versión patch más reciente de Go 1.25.

  runtime: go
  env: flex

  runtime_config:
      operating_system: "ubuntu22"
      runtime_version: "1.25"

Consulta la referencia de app.yaml para obtener más información.

Versiones anteriores del entorno de ejecución

Para usar Go 1.15 y versiones anteriores, especifica una versión en el ajuste runtime con el formato go1.x en el archivo app.yaml. Por ejemplo:

  runtime: go1.14
  env: flex

Si no se especifica ninguna versión, se seleccionará automáticamente la versión predeterminada de go1.11.

Tu aplicación usa la última versión estable de la versión especificada en el archivo app.yaml. App Engine se actualiza automáticamente a las nuevas revisiones de parches, pero no actualiza automáticamente la versión principal.

Por ejemplo, tu aplicación podría desplegarse en Go 1.14.10 y, más adelante, actualizarse automáticamente a Go 1.14.11, pero no se actualizará automáticamente a la versión principal Go 1.15.

Si eliges la versión del tiempo de ejecución de Go go1.15 en tu archivo app.yaml, se usará la versión más reciente de 1.15, por ejemplo, 1.15.15.

  runtime: go1.15
  env: flex

Compatibilidad con otros entornos de ejecución de Go

Si necesitas usar una versión de Go que no sea compatible, puedes crear un runtime personalizado y seleccionar una imagen base válida con la versión de Go que necesites.

Para obtener imágenes base proporcionadas por Google o imágenes base de Docker Go, consulta Crear tiempos de ejecución personalizados.

Importar paquetes

El código se compila cuando despliegas la aplicación en App Engine. Cuando ejecutas el comando de despliegue, primero se recogen las dependencias de tu aplicación de tu GOPATH local y, a continuación, se envían todas al servidor de compilación. Si faltan dependencias (por ejemplo, bibliotecas de terceros), se producirán errores de compilación.

Para evitar errores de compilación y asegurarte de que todas las dependencias de tu aplicación se implementen con tu código, debes probar tu aplicación de forma local antes de implementarla.

Prolongar el tiempo de ejecución

Para obtener instrucciones sobre cómo ampliar y personalizar el tiempo de ejecución de Go, consulta el compilador del tiempo de ejecución de Go en GitHub.

Servidor de metadatos

Cada instancia de tu aplicación puede usar el servidor de metadatos de Compute Engine para consultar información sobre la instancia, como su nombre de host, su dirección IP externa, su ID de instancia, sus metadatos personalizados y la información de la cuenta de servicio. App Engine no te permite definir metadatos personalizados para cada instancia, pero puedes definir metadatos personalizados para todo el proyecto y leerlos desde tus instancias de App Engine y Compute Engine.

Usa el paquete cloud.google.com/go/compute/metadata para acceder al servidor de metadatos.