Establece variables de entorno para configurar compilaciones

Puedes configurar las variables de entorno que se establecen durante la compilación 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.

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.

Configura variables de entorno

Para establecer variables de entorno en compilaciones locales, agrega la marca --env al comando pack en cada variable de entorno.

Puedes usar una o más de las variables de entorno que admite tu entorno de ejecución.

pack build SERVICE_NAME \
    --env ENVIRONMENT_VARIABLE

Reemplaza lo siguiente:

  • SERVICE_NAME por el nombre del servicio de tu aplicación o función.
  • ENVIRONMENT_VARIABLE por la variable de entorno que deseas establecer durante el tiempo de compilación.
Ejemplo

Para establecer la variable de entorno GOOGLE_ENTRYPOINT="gunicorn -p :8080 main:app" en la imagen de contenedor, ejecuta el siguiente comando:

pack build my-app \
    --builder gcr.io/buildpacks/builder:v1 \
    --env GOOGLE_ENTRYPOINT="gunicorn -p :8080 main:app"
    --env MY-LOCAL-ENV-VARIABLE

Compilaciones remotas

Para configurar variables de entorno para compilaciones remotas, usa el descriptor de proyecto project.toml. Cloud Build usa el descriptor del proyecto project.toml cuando se compila la imagen de contenedor.

Antes de comenzar

  1. Accede a tu Google Cloud cuenta de. 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.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build and Artifact Registry APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  5. Instala Google Cloud CLI.

  6. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  7. Para inicializar gcloud CLI, ejecuta el siguiente comando:

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

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  9. Verify that billing is enabled for your Google Cloud project.

  10. Enable the Cloud Build and Artifact Registry APIs.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the APIs

  11. Instala Google Cloud CLI.

  12. Si usas un proveedor de identidad externo (IdP), primero debes acceder a la gcloud CLI con tu identidad federada.

  13. Para inicializar gcloud CLI, ejecuta el siguiente comando:

    gcloud init
  14. Asegúrate de que tu Google Cloud proyecto 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 Google Cloud proyecto.
      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 con la ubicación en la ubicación de tu Google Cloud proyecto 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.

Opcional: Descarga una aplicación de ejemplo

  1. Clona el repositorio de muestra en tu máquina local:
    git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
  2. Dirígete al directorio que contiene el código de muestra de la aplicación:

    Go

    cd buildpack-samples/sample-go

    Java

    cd buildpack-samples/sample-java-gradle

    Node.js

    cd buildpack-samples/sample-node

    PHP

    cd buildpack-samples/sample-php

    Python

    cd buildpack-samples/sample-python

    Ruby

    cd buildpack-samples/sample-ruby

    .NET

    cd buildpack-samples/sample-dotnet

Compila la aplicación con variables de entorno

  1. En el directorio raíz de tu servicio, crea o actualiza el descriptor de proyectos project.toml para incluir la sección [[build.env]] y cualquiera de las variables de entorno compatible:
    [[build.env]]
        name = "ENVIRONMENT_VARIABLE_NAME"
        value = "ENVIRONMENT_VARIABLE_VALUE"

    Reemplaza lo siguiente:

    • ENVIRONMENT_VARIABLE_NAME por el nombre de una variable de entorno compatible.
    • ENVIRONMENT_VARIABLE_VALUE por el valor correspondiente para la variable de entorno especificada.

    Ejemplo

    [[build.env]]
        name = "GOOGLE_ENTRYPOINT"
        value = "gunicorn -p :8080 main:app"
  2. Usa gcloud para enviar el código fuente de la aplicación a Cloud Build:
    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/IMAGE_NAME

    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 de tu Google Cloud proyecto.
    • REPO_NAME por el nombre de tu repositorio de Docker.
    • IMAGE_NAME por el nombre de la imagen de contenedor

    Ejemplos: Si descargaste una aplicación de ejemplo, ejecuta el comando correspondiente:

    Go

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-go

    Java

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-java-gradle

    Node.js

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-node

    PHP

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-php

    Python

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-python

    Ruby

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-ruby

    .NET

    gcloud builds submit --pack image=LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/sample-dotnet
  3. 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 de tu Google Cloud proyecto.
    • REPO_NAME por el nombre de tu repositorio de Docker.