Existen dos métodos para compilar imágenes de contenedor con paquetes de compilación:
- Compila de forma local con la CLI de
pack
para probar tu función de forma local y crear prototipos rápidamente de los cambios antes de la implementación. - Compila de forma remota con Cloud Build. La compilación con Cloud Build es útil para las funciones que tienen procesos de compilación de uso intensivo de recursos y también puede ayudar a proteger tu cadena de suministro de software.
Configura tu proyecto para compilar funciones
Para compilar funciones con paquetes de compilación, usa la biblioteca de Functions Framework.
Debes configurar la variable de entorno GOOGLE_FUNCTION_TARGET
con el nombre de la función que usas como punto de entrada. Para obtener detalles sobre cómo usar las variables de entorno con Cloud Functions, consulta Configura los servicios de Cloud Functions.
Compilaciones locales
Usa la CLI de pack
para compilar tus funciones de forma local en una imagen de contenedor.
Antes de comenzar
- Instala la edición de la comunidad de Docker (CE) en tu estación de trabajo.
pack
usa Docker como un compilador de imágenes de OCI. - Instala la CLI de Pack.
- Instala la herramienta de control de fuente Git para obtener la aplicación de muestra de GitHub.
Compila una función localmente
Usa el comando pack build
y especifica el compilador predeterminado --builder=gcr.io/buildpacks/builder
para compilar tus imágenes de contenedor de manera local.
pack build --builder=gcr.io/buildpacks/builder IMAGE_NAME
Sustituye IMAGE_NAME
por el nombre de la imagen de contenedor
También puedes personalizar la imagen de contenedor mediante la extensión de la compilación y ejecución de imágenes.
Compila una función de muestra de manera local
En los siguientes ejemplos, se muestra cómo compilar una muestra de forma local.
- Clona el repositorio de muestra en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
- Ve al directorio que contiene el código de muestra de la aplicación:
Go
cd buildpack-samples/sample-functions-framework-go
Java
cd buildpack-samples/sample-functions-framework-java-mvn
Node.js
cd buildpack-samples/sample-functions-framework-node
Python
cd buildpack-samples/sample-functions-framework-python
Ruby
cd buildpack-samples/sample-functions-framework-ruby
- Usa
pack
para compilar la función de muestra:Go
pack build --builder=gcr.io/buildpacks/builder sample-functions-framework-go
Java
pack build --builder gcr.io/buildpacks/builder:v1 sample-functions-java-mvn
Node.js
pack build --builder=gcr.io/buildpacks/builder sample-functions-framework-node
Python
pack build --builder=gcr.io/buildpacks/builder sample-functions-framework-python
Ruby
pack build --builder=gcr.io/buildpacks/builder sample-functions-framework-ruby
- Ejecuta la imagen con
docker
:Go
docker run -p8080:8080 sample-functions-framework-go
Java
docker run -it -ePORT=8080 -p8080:8080 sample-functions-java-mvn
Node.js
docker run -it -ePORT=8080 -p8080:8080 sample-functions-framework-node
Python
docker run -it -ePORT=8080 -p8080:8080 sample-functions-framework-python
Ruby
docker run -it -ePORT=8080 -p8080:8080 sample-functions-framework-ruby
- Para visitar la función en ejecución, navega a localhost:8080.
Compilaciones remotas
Usa Cloud Build para compilar la aplicación en una imagen de contenedor y Artifact Registry como el repositorio de contenedores en el que se implementa y almacena cada imagen.
Antes de comenzar
- Accede a tu cuenta de Google Cloud. Si eres nuevo en Google Cloud, crea una cuenta para evaluar el rendimiento de nuestros productos en situaciones reales. Los clientes nuevos también obtienen $300 en créditos gratuitos para ejecutar, probar y, además, implementar cargas de trabajo.
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de Cloud Build and Artifact Registry.
- Instala Google Cloud CLI.
-
Para inicializar la CLI de gcloud, ejecuta el siguiente comando:
gcloud init
-
En la página del selector de proyectos de la consola de Google Cloud, selecciona o crea un proyecto de Google Cloud.
-
Asegúrate de que la facturación esté habilitada para tu proyecto de Google Cloud.
-
Habilita las API de Cloud Build and Artifact Registry.
- Instala Google Cloud CLI.
-
Para inicializar la CLI de gcloud, ejecuta el siguiente comando:
gcloud init
- Asegúrate de que tu proyecto de Google Cloud tenga acceso a un repositorio de imágenes de contenedor.
Para configurar el acceso a un repositorio de Docker en Artifact Registry, haz lo siguiente:
- Crea un nuevo repositorio de Docker en la misma ubicación de tu proyecto de Google Cloud.
gcloud artifacts repositories create REPO_NAME \ --repository-format=docker \ --location=REGION --description="DESCRIPTION"
Reemplaza lo siguiente:REPO_NAME
por el nombre que elijas para el repositorio de Docker.REGION
por la ubicación en la ubicación de tu proyecto de Google Cloud o más cercana a ella.DESCRIPTION
por una descripción que elijas.
Por ejemplo, para crear un repositorio de
docker
enus-west2
con la descripción “Repositorio de Docker”, ejecuta lo siguiente:gcloud artifacts repositories create buildpacks-docker-repo --repository-format=docker \ --location=us-west2 --description="Docker repository"
- Verifica que se haya creado el repositorio:
gcloud artifacts repositories list
Deberías ver el nombre que elijas para tu repositorio de Docker en la lista.
- Crea un nuevo repositorio de Docker en la misma ubicación de tu proyecto de Google Cloud.
Crea una función de forma remota
Usa el comando gcloud builds
y la marca image
para compilar y subir tu imagen de contenedor en el repositorio:
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME
Reemplaza lo siguiente:
LOCATION
por el nombre de la región de tu repositorio de contenedores. Ejemplo:us-west2
PROJECT_ID
por el ID del proyecto de Google Cloud.REPO_NAME
por el nombre de tu repositorio de Docker.IMAGE_NAME
por el nombre de la imagen de contenedor
Ejemplo:
gcloud builds submit --pack image=us-west2-docker.pkg.dev/my-project-id/my-buildpacks-docker-repo
Crea una función de muestra de forma remota
En los siguientes ejemplos, se muestra cómo compilar una muestra de forma remota y, luego, verificar que la imagen de contenedor se envió a tu repositorio en Artifact Registry.
- Clona el repositorio de muestra en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
- Ve al directorio que contiene el código de muestra de la aplicación:
Go
cd buildpack-samples/sample-functions-framework-go
Java
cd buildpack-samples/sample-functions-framework-java-mvn
Node.js
cd buildpack-samples/sample-functions-framework-node
Python
cd buildpack-samples/sample-functions-framework-python
Ruby
cd buildpack-samples/sample-functions-framework-ruby
- Usa
gcloud
para enviar el código fuente de la aplicación a Cloud Build:Go
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-functions-framework-go
Java
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-functions-framework-gradle
Node.js
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-functions-framework-node
Python
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-functions-framework-python
Ruby
gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-functions-framework-ruby
Reemplaza lo siguiente:
LOCATION
por el nombre de región de tu repositorio de contenedores. Ejemplo:us-west2-docker.pkg.dev
PROJECT_ID
por el ID del proyecto de Google Cloud.REPO_NAME
por el nombre de tu repositorio de Docker.
-
Verifica que la función de muestra se haya publicado correctamente en
REPO_NAME
:gcloud artifacts docker images list LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME
Reemplaza lo siguiente:
LOCATION
por el nombre de la región de tu repositorio de contenedores. Ejemplo:us-west2
PROJECT_ID
por el ID del proyecto de Google Cloud.REPO_NAME
por el nombre de tu repositorio de Docker.
Pasos siguientes
- Implementa tu imagen de función en Cloud Run.
- Configura las variables de entorno.
- Configura imágenes de compilación.
- Acelera las compilaciones con imágenes de caché.