En esta página, se describe cómo implementar servicios en Cloud Run con un archivo basado en la especificación de Compose.
Puedes realizar implementaciones en Cloud Run con un archivo de Compose de las siguientes maneras:
Usar Compose para implementar en Cloud Run es ideal para el desarrollo y simplifica la transición de tu entorno local a un entorno de nube. Te permite mantener un formato de configuración coherente para tus aplicaciones locales y las implementadas.
Para administrar entornos de producción en un entorno de infraestructura como código (IaC), recomendamos usar Terraform.
Limitaciones
- La implementación de Compose implementa un solo servicio de Cloud Run con varios contenedores.
- La composición de la implementación solo traduce un subconjunto de las funciones compatibles de Cloud Run.
- De forma predeterminada, los servicios creados con Compose se establecen en 1 instancia máxima.
- Si bien simplifica la implementación, Cloud Run Compose deploy no reemplaza una estrategia integral de infraestructura como código para los entornos de producción.
Implementa servicios desde imágenes de contenedor con Compose
Define tus servicios en un archivo compose.yaml y, luego, impleméntalos desde imágenes de contenedor existentes. Para obtener más información, consulta Implementa imágenes de contenedor.
Ejemplo: Aplicación de un solo servicio
En el siguiente ejemplo, se muestra un archivo compose.yaml para un servicio web que usa una imagen de contenedor compilada previamente.
services:
web:
image: us-docker.pkg.dev/cloudrun/container/hello
ports:
- "8080:8080"
Implemente el servicio
Para implementar los servicios, ejecuta el comando
gcloud run compose up:gcloud run compose up compose.yamlResponde
ya cualquier solicitud para instalar los componentes obligatorios o habilitar las APIs.Opcional: Haz que tu servicio sea público si deseas permitir el acceso sin autenticación.
Después de la implementación, se muestra la URL del servicio de Cloud Run. Copia esta URL y pégala en tu navegador para ver el contenedor en ejecución. Puedes inhabilitar la autenticación predeterminada desde la consola de Google Cloud .
Implementa desde la fuente con Compose
Define tus servicios en un archivo compose.yaml y, luego, compílalos a partir del código fuente para implementarlos. Para obtener más información, consulta Implementa servicios desde el código fuente.
Ejemplo: Aplicación de un solo servicio
En el siguiente ejemplo, se muestra un archivo compose.yaml para un servicio web que se compila a partir del código fuente en el directorio actual.
services:
web:
build: .
ports:
- "8080:8080"
Implementa los servicios
En el directorio de tu proyecto, crea un archivo
compose.yamlcon las definiciones de tu servicio.Para implementar los servicios, ejecuta el comando
gcloud run compose up:gcloud run compose up compose.yamlResponde
ya cualquier solicitud para instalar los componentes obligatorios o habilitar las APIs.Opcional: Haz que tu servicio sea público si deseas permitir el acceso sin autenticación.
Después de la implementación, se muestra la URL del servicio de Cloud Run. Copia esta URL y pégala en tu navegador para ver el contenedor en ejecución. Puedes inhabilitar la autenticación predeterminada desde la consola de Google Cloud .
Cómo forzar una recompilación
De forma predeterminada, la implementación de Cloud Run Compose omite el proceso de compilación si el código fuente no cambió desde la última compilación. Para forzar la recompilación de los servicios definidos con una configuración build, usa la marca --build de la siguiente manera:
gcloud run compose up compose.yaml --build
Esto es especialmente útil si se borró un repositorio, una imagen o un resumen remotos, pero tu código fuente local sigue siendo el mismo. Las marcas --build y --no-build son mutuamente excluyentes.
Funciones admitidas
Cuando realizas la implementación con un archivo compose.yaml, Cloud Run puede aprovisionar automáticamente otros recursos de Google Cloud según se definan en tu archivo de Compose. Si se requieren recursos, Cloud Run te pedirá tu consentimiento antes de crearlos.
Cloud Run admite el siguiente subconjunto de funciones de Compose:
| Campo de redacción | Asignación y descripción de Cloud Run |
|---|---|
services |
Los servicios se asignan a contenedores individuales en el servicio de Cloud Run implementado. |
volumes |
Es parcialmente compatible. Traduce los parámetros de activación |
secrets |
Compatible. Usa Secret Manager. |
configs |
Compatible. Usa Cloud Storage. |
build |
Compatible. Compila el contenedor con el contexto de compilación, lo etiqueta y lo envía al repositorio |
image |
Implementa una imagen de contenedor compilada previamente desde un registro compatible. Úsalo si tienes una imagen compilada previamente. Solo admite imágenes de Docker Hub y Artifact Registry. En el caso de las imágenes personalizadas, puedes enviarlas a Artifact Registry y usarlas. |
ports |
Es una lista de asignaciones de puertos, como |
expose |
Es una lista de puertos para exponer, pero no publicar, como |
depends_on |
Define el orden de inicio del contenedor. Esto garantiza que cualquier servicio incluido en la lista de |
cpus |
Es una sugerencia que se usa para establecer los límites de CPU y memoria de Cloud Run, y que asigna recursos automáticamente según la siguiente lógica:
|
container_name |
Establece el nombre del contenedor para la resolución de dependencias. Si no se especifica, se usa el nombre del servicio de forma predeterminada. |
environment |
Pasa variables de entorno al contenedor correspondiente en Cloud Run. |
command |
Anula el comando predeterminado del contenedor, declarado por el contenedor, asignándolo al atributo |
entrypoint |
Compatible. |
env_file |
Compatible. |
x-google-cloudrun:ingress-container |
(Extensión) Agrega esta extensión específica de Google a un servicio y configúrala como |
x-google-cloudrun:volume-type: in-memory |
(Extensión) Agrega esta extensión específica de Google a un volumen y configúrala como |
Secrets asignados a Secret Manager
Si tu archivo compose.yaml define secrets, gcloud CLI aprovisiona secretos de Secret Manager para almacenar estos datos.
Volúmenes y configuraciones asignados a Cloud Storage
Si tu archivo compose.yaml define volumes o configs de nivel superior, la gcloud CLI aprovisiona un bucket de Cloud Storage para administrar estos datos. Se crea un solo bucket por implementación, y se usan carpetas para separar los volúmenes y las configuraciones.
- Volúmenes con nombre: En el bucket, se crea una carpeta vacía que corresponde al nombre del volumen.
- Activación de vinculaciones: En el caso de la activación de vinculaciones, Cloud Run sube el contenido del directorio del código fuente local a una carpeta del bucket antes de la implementación.
- Configs: Para cada configuración definida con una fuente
file:, Cloud Run sube el contenido del archivo local a una carpeta del bucket.
Roles obligatorios
Durante la implementación, Cloud Run otorga automáticamente a la identidad del servicio implementado los roles necesarios para acceder a los recursos aprovisionados:
- Bucket de Cloud Storage:
roles/storage.objectUser - Secret Manager Secrets:
roles/secretmanager.secretAccessor
Comunicación entre contenedores de la misma instancia
Cloud Run agrega una entrada al archivo /etc/hosts en cada contenedor. Esta entrada asigna los nombres de servicio de tu archivo compose.yaml a sus direcciones IP internas, lo que permite que los servicios se comuniquen entre sí con sus nombres de servicio.
¿Qué sigue?
- Obtén más información para administrar servicios.
- Obtén más información para configurar la autenticación.
- Obtén más información para administrar Secrets.