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
- Instala Docker Community Edition (CE)
en tu estación de trabajo.
packusa Docker como compilador de imágenes OCI. - Instala Pack CLI.
- 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_NAMEcon el nombre del servicio de tu aplicación o función.ENVIRONMENT_VARIABLEcon 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
- 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.
-
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init -
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 theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
-
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 theserviceusage.services.enablepermission. Learn how to grant roles. -
Install the Google Cloud CLI.
-
Si utilizas un proveedor de identidades (IdP) externo, primero debes iniciar sesión en la CLI de gcloud con tu identidad federada.
-
Para inicializar gcloud CLI, ejecuta el siguiente comando:
gcloud init - 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:
- Crea un repositorio de Docker en la misma ubicación que tu Google Cloud proyecto.
Reemplazar:gcloud artifacts repositories create REPO_NAME \ --repository-format=docker \ --location=REGION --description="DESCRIPTION"
REPO_NAMEpor el nombre que elijas para tu repositorio de Docker.REGIONcon la ubicación del proyecto o la más cercana. Google CloudDESCRIPTIONcon la descripción que quieras.
Por ejemplo, para crear un repositorio
dockerenus-west2con 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"
- 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.
- Crea un repositorio de Docker en la misma ubicación que tu Google Cloud proyecto.
- Clona el repositorio de ejemplo en tu máquina local:
git clone https://github.com/GoogleCloudPlatform/buildpack-samples.git
- 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
- En el directorio raíz de tu servicio, crea o actualiza el descriptor de proyecto
project.tomlpara 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_NAMEcon el nombre de una variable de entorno admitida.ENVIRONMENT_VARIABLE_VALUEcon el valor correspondiente de la variable de entorno especificada.
Ejemplo
[[build.env]] name = "GOOGLE_ENTRYPOINT" value = "gunicorn -p :8080 main:app"
- Usa
gcloudpara 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:
LOCATIONcon el nombre de la región de tu repositorio de contenedores. Ejemplo:us-west2-docker.pkg.devPROJECT_IDpor el ID de tu Google Cloud proyecto.REPO_NAMEcon el nombre de tu repositorio de Docker.IMAGE_NAMEcon 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
-
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:
LOCATIONcon el nombre de la región de tu repositorio de contenedores. Ejemplo:us-west2-docker.pkg.devPROJECT_IDpor el ID de tu Google Cloud proyecto.REPO_NAMEcon el nombre de tu repositorio de Docker.