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.
pack
usa 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_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
- 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.create
permission. 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.enable
permission. 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.create
permission. 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.enable
permission. 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_NAME
por el nombre que elijas para tu repositorio de Docker.REGION
con la ubicación del proyecto o la más cercana. Google CloudDESCRIPTION
con la descripción que quieras.
Por ejemplo, para crear un repositorio
docker
enus-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"
- 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.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"
- 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
-
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.