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 realizar implementaciones 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"
Implementa los servicios
Para implementar los servicios, ejecuta el comando
gcloud beta run compose up:gcloud beta 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 beta run compose up:gcloud beta 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 .
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. Usar Secret Manager |
configs |
Compatible. Usa Cloud Storage. |
build |
Cloud Build 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 |
cpu_count/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 en |
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.
- Activaciones: En el caso de las activaciones, 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 los servicios 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.