Usa un compilador específico

Los compiladores son imágenes con control de versiones que contienen todos los componentes necesarios para crear un contenedor ejecutable. Cada compilador usa una distribución de SO específica como imagen base, como Ubuntu 22, y admite varias versiones de lenguaje de programación.

Es posible que debas personalizar la versión del compilador si necesitas lo siguiente:

  • Una dependencia específica del SO que solo está disponible en una versión específica del compilador.
  • Una versión específica del lenguaje de programación que está disponible solo en una versión específica del compilador.

Compilaciones locales

Para las compilaciones locales, debes tener instaladas la CLI de Pack y Docker.

Antes de comenzar

  1. 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.
  2. Instala la CLI de Pack.
  3. Instala la herramienta de control de fuente Git para obtener la aplicación de ejemplo de GitHub.

Especifica la versión del compilador con pack

Puedes agregar la marca --builder al comando pack para especificar la versión del compilador que deseas usar:

pack build SERVICE_IMAGE_NAME --builder=BUILDER_IMAGE_URL

Reemplaza lo siguiente:

  • BUILDER_IMAGE_URL por la URL del compilador. Ejemplo: gcr.io/buildpacks/builder:google-22
  • SERVICE_IMAGE_NAME por el nombre que elijas para la imagen de la aplicación.

Para obtener más información sobre el comando pack, consulta la documentación de la CLI.

Especifica la versión del compilador con project.toml

Puedes usar un descriptor de proyecto del paquete de compilación (project.toml) para configurar el compilador cuando compilas con pack

  1. En el directorio raíz de tu aplicación, crea un archivo llamado project.toml con la siguiente configuración:
    [build]
    builder = "BUILDER_IMAGE_URL"
  2. Ejecuta el comando "pack" para compilar tu aplicación:
    pack build SERVICE_IMAGE_NAME

Reemplaza lo siguiente:

  • BUILDER_IMAGE_URL por la URL del compilador, por ejemplo, gcr.io/buildpacks/builder:google-22
  • SERVICE_IMAGE_NAME por el nombre que elijas para la imagen de la aplicación.

Compilaciones remotas

Para usar un compilador específico con Cloud Build, agrega la marca --pack cuando envíes el proyecto.

Antes de comenzar

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build and Artifact Registry APIs.

    Enable the APIs

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Cloud Build and Artifact Registry APIs.

    Enable the APIs

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init
  12. 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:

    1. 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 en us-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"
    2. 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.

Compila la aplicación con un compilador específico

  1. Usa gcloud para enviar el código fuente de la aplicación a Cloud Build:
    gcloud builds submit --pack builder=BUILDER_IMAGE_URL,image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/SERVICE_IMAGE_NAME

    Reemplaza lo siguiente:

    • BUILDER_IMAGE_URL por la URL del compilador. Ejemplo: gcr.io/buildpacks/builder:google-22
    • 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.
    • SERVICE_IMAGE_NAME por el nombre de la imagen de contenedor que creaste.

    Para obtener más información sobre el comando submit, consulta la documentación de Cloud Build.

  2. Verifica que la aplicación de muestra se haya publicado de forma correcta 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-docker.pkg.dev
    • PROJECT_ID por el ID del proyecto de Google Cloud.
    • REPO_NAME por el nombre de tu repositorio de Docker.

Implementa desde la fuente con Cloud Run

Puedes usar un archivo descriptor de proyecto del paquete de compilación, p. ej., project.toml para configurar el compilador cuando implementas desde la fuente con Cloud Run

  1. Inicializa un archivo project.toml en la raíz del directorio de tu aplicación y pega la siguiente configuración en él:
    [build]
    builder = "BUILDER_IMAGE_URL"
  2. Implementa tu aplicación desde la fuente
    gcloud run deploy --source . SERVICE_IMAGE_NAME

Reemplaza lo siguiente:

  • BUILDER_IMAGE_URL por la URL del compilador. Ejemplo: gcr.io/buildpacks/builder:google-22
  • SERVICE_IMAGE_NAME por el nombre de la imagen de contenedor que creaste.