Desarrollar una aplicación de Go

Especificar la versión de Go

De forma predeterminada, el paquete de compilación de Go usa la última versión estable del compilador de Go. Si tu aplicación requiere una versión específica, puedes usar la variable de entorno GOOGLE_GO_VERSION para proporcionar una restricción de semver que se usará para seleccionar una versión de Go disponible.

pack build sample-go --builder=gcr.io/buildpacks/builder \
  --env GOOGLE_GO_VERSION="17.x.x"

Marcas de compilación

El paquete de compilación de Go compila el código fuente de tu aplicación en un archivo ejecutable mediante go build command. Se pueden usar las siguientes variables de entorno para configurar el comportamiento de la compilación:

  • GOOGLE_BUILDABLE Especifica la ruta a una unidad compilable. Por ejemplo, ./maindir para Go compilará el paquete con la raíz en maindir.

  • GOOGLE_CLEAR_SOURCE Omitir el código fuente de la imagen de la aplicación. Si la aplicación depende de archivos estáticos, como plantillas de Go, al definir esta variable puede que la aplicación no funcione correctamente. Ejemplo: true, True y 1 borrarán el origen.

  • GOOGLE_GOGCFLAGS Se ha enviado a go build y go run como valor de -gcflags sin interpretación. Por ejemplo, all=-N -l habilita el análisis de condiciones de carrera y cambia la forma en que se registran las rutas de los archivos de origen en el archivo binario.

  • GOOGLE_GOLDFLAGS Se pasa a go build y go run como valor -ldflags sin interpretación. Ejemplo: -s -w se usa para eliminar y reducir el tamaño del archivo binario.

Gestionar dependencias

Te recomendamos que uses módulos de Go para gestionar las dependencias de tu aplicación de Go. El paquete de compilación de Go usa el comando go build para compilar tu aplicación y, por lo tanto, coincide con el comportamiento de Go. Para asegurarte de que tu aplicación usa el modo compatible con módulos, debes incluir un archivo go.mod en la raíz de la aplicación.

Incluir dependencias de proveedores

El proveedor copia los paquetes que usa tu aplicación en el directorio de la aplicación en lugar de descargar módulos de sus fuentes durante el proceso de compilación. Go proporciona el comando go build para incluir los paquetes que necesita tu aplicación en un directorio llamado vendor en el directorio raíz de tu aplicación.

Configurar el punto de entrada de la aplicación

De forma predeterminada, el paquete de compilación de Go configurará la entrada del contenedor de la aplicación para invocar el ejecutable main que se genera al compilar el origen de la aplicación. Si necesitas anularlo, puedes hacerlo proporcionando un Procfile o pasando la variable de entorno GOOGLE_ENTRYPOINT.

Variables de entorno

El paquete de compilación de Go admite las siguientes variables de entorno para personalizar tu contenedor:

GO

Consulta la documentación de Go sobre las variables de entorno.

Ejemplo: GOFLAGS=-flag=value pasa -flag=value a los comandos de go.