Definir variables de entorno para configurar compilaciones

Puedes configurar variables de entorno que se definen durante la compilación de tu imagen de contenedor.

También puedes personalizar tu imagen de contenedor ampliando las imágenes de compilación y ejecución.

Compilaciones locales

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

Antes de empezar

  1. Instala Docker Community Edition (CE) en tu estación de trabajo. pack usa Docker como compilador de imágenes OCI.
  2. Instala Pack CLI.
  3. Instala la herramienta de control de versiones de Git para obtener la aplicación de ejemplo de GitHub.

Establece variables de entorno:

Para definir variables de entorno para compilaciones locales, añade la marca --env al comando pack de cada variable de entorno.

Puedes usar una o varias de las variables de entorno admitidas por tu tiempo de ejecución.

pack build SERVICE_NAME \
    --env ENVIRONMENT_VARIABLE

Sustituye:

  • SERVICE_NAME con el nombre del servicio de tu aplicación o función.
  • ENVIRONMENT_VARIABLE con la variable de entorno que quieras definir durante el tiempo de compilación.
Ejemplo

Para definir la variable de entorno GOOGLE_ENTRYPOINT="gunicorn -p :8080 main:app" en tu 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 definir variables de entorno en compilaciones remotas, se usa el descriptor de proyecto project.toml. Cloud Build usa el descriptor de proyecto project.toml cuando se crea la imagen de contenedor.

Antes de empezar

  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.

    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 (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. Install the Google Cloud CLI.

  6. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud 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 (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. Install the Google Cloud CLI.

  12. Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.

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

    gcloud init
  14. Asegúrate de que tu proyecto Google Cloud tiene acceso a un repositorio de imágenes de contenedor.

    Para configurar el acceso a un repositorio de Docker en Artifact Registry, sigue estos pasos:

    1. Crea un repositorio de Docker en la misma ubicación que tu Google Cloud proyecto.
      gcloud artifacts repositories create REPO_NAME \
      --repository-format=docker \
      --location=REGION --description="DESCRIPTION"
      Reemplazar:
      • REPO_NAME por el nombre que elijas para tu repositorio de Docker.
      • REGION con la ubicación del proyecto o la más cercana. Google Cloud
      • DESCRIPTION con la descripción que quieras.

      Por ejemplo, para crear un repositorio docker en us-west2 con la descripción "Repositorio de Docker", ejecuta el siguiente comando:

      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ía ver el nombre que elija para su repositorio de Docker en la lista.

  15. Opcional: Descargar una aplicación de ejemplo

    1. Clona el repositorio de ejemplo en tu máquina local:
      git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
    2. Cambia al directorio que contiene el código de ejemplo 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 proyecto project.toml para incluir la sección [[build.env]] y cualquiera de las variables de entorno admitidas:
      [[build.env]]
          name = "ENVIRONMENT_VARIABLE_NAME"
          value = "ENVIRONMENT_VARIABLE_VALUE"

      Sustituye:

      • ENVIRONMENT_VARIABLE_NAME con el nombre de una variable de entorno admitida.
      • ENVIRONMENT_VARIABLE_VALUE con el valor correspondiente de 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

      Sustituye:

      • LOCATION con 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 con el nombre de tu repositorio de Docker.
      • IMAGE_NAME con el nombre de tu imagen de contenedor.

      Ejemplos: Si has descargado 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. Comprueba que la aplicación de ejemplo se haya publicado correctamente en REPO_NAME:
      gcloud artifacts docker images list LOCATION-docker.pkg.dev/project-id/REPO_NAME

      Sustituye:

      • LOCATION con 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 con el nombre de tu repositorio de Docker.