En esta página se describe cómo desplegar servicios en Cloud Run mediante un archivo basado en la especificación de Compose.
Puedes desplegar en Cloud Run con un archivo de Compose de las siguientes formas:
Usar Compose para desplegar 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 tanto para tus aplicaciones locales como para las implementadas.
Para gestionar entornos de producción en un entorno de infraestructura como código (IaC), te recomendamos que uses Terraform.
Limitaciones
- Compose Deployment despliega un único servicio de Cloud Run con varios contenedores.
- La opción de crear implementaciones solo traduce un subconjunto de las funciones de Cloud Run admitidas.
- Los servicios creados con Compose tienen 1 instancia máxima de forma predeterminada.
- Aunque simplifica el despliegue, Cloud Run Compose deploy no sustituye a una estrategia integral de infraestructura como código para entornos de producción.
Desplegar servicios a partir de imágenes de contenedor con Compose
Define tus servicios en un archivo compose.yaml y despliégalos desde imágenes de contenedor que ya tengas. Para obtener más información, consulta Implementar imágenes de contenedor.
Ejemplo: Aplicación de un solo servicio
En el siguiente ejemplo se muestra un archivo compose.yaml de un servicio web que usa una imagen de contenedor prediseñada.
services:
web:
image: us-docker.pkg.dev/cloudrun/container/hello
ports:
- "8080:8080"
Desplegar los servicios
Para desplegar los servicios, ejecuta el comando
gcloud beta run compose up:gcloud beta run compose up compose.yamlResponde
ya las peticiones para instalar los componentes necesarios o habilitar las APIs.Opcional: Haz público tu servicio si quieres permitir el acceso sin autenticar al servicio.
Después de la implementación, se muestra la URL del servicio de Cloud Run. Copia esta URL y pégala en el navegador para ver el contenedor en ejecución. Puedes inhabilitar la autenticación predeterminada desde la consola Google Cloud .
Desplegar desde el código fuente con Compose
Define tus servicios en un archivo compose.yaml y despliégalos compilando el código fuente. Para obtener más información, consulta Implementar servicios a partir de código fuente.
Ejemplo: Aplicación de un solo servicio
En el siguiente ejemplo se muestra un archivo compose.yaml de un servicio web que se compila a partir de la fuente del directorio actual.
services:
web:
build: .
ports:
- "8080:8080"
Desplegar los servicios
En el directorio de tu proyecto, crea un archivo
compose.yamlcon tus definiciones de servicio.Para desplegar los servicios, ejecuta el comando
gcloud beta run compose up:gcloud beta run compose up compose.yamlResponde
ya las peticiones para instalar los componentes necesarios o habilitar las APIs.Opcional: Haz público tu servicio si quieres permitir el acceso sin autenticación al servicio.
Después de la implementación, se muestra la URL del servicio de Cloud Run. Copia esta URL y pégala en el navegador para ver el contenedor en ejecución. Puedes inhabilitar la autenticación predeterminada desde la consola Google Cloud .
Funciones compatibles
Cuando despliegas con un archivo compose.yaml, Cloud Run puede aprovisionar automáticamente otros recursos Google Cloud definidos en tu archivo Compose. Si se necesitan recursos, Cloud Run te pedirá permiso 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 |
Parcialmente compatible. Traduce los montajes de |
secrets |
Compatible. Usar Secret Manager. |
configs |
Compatible. Usar Cloud Storage. |
build |
Cloud Build compila el contenedor con el contexto de compilación, lo etiqueta y lo envía al repositorio |
image |
Despliega una imagen de contenedor prediseñada desde un registro compatible. Úsalo si tienes una imagen prediseñada. Solo se admiten imágenes de Docker Hub y Artifact Registry. En el caso de las imágenes personalizadas, puedes enviarlas a Artifact Registry y usarlas. |
ports |
Una lista de asignaciones de puertos, como |
expose |
Una lista de puertos que se van a exponer, pero no a publicar, como |
depends_on |
Define el orden de inicio de los contenedores. De esta forma, se asegura de que cualquier servicio de la lista |
cpu_count/cpus |
Una sugerencia que se usa para definir los límites de CPU y memoria de Cloud Run, que asigna recursos automáticamente según la siguiente lógica:
|
container_name |
Define el nombre del contenedor para la resolución de dependencias. Si no se especifica, se usa el nombre del servicio de forma predeterminada. |
environment |
Transfiere 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) Añade esta extensión específica de Google a un servicio y configúrala como |
x-google-cloudrun:volume-type: in-memory |
(Extensión) Añade esta extensión específica de Google a un volumen y configúrala como |
Secretos asignados a Secret Manager
Si el archivo compose.yaml define secrets, la CLI de gcloud aprovisiona secretos de Secret Manager para almacenar estos datos.
Volúmenes y configuraciones asignados a Cloud Storage
Si el archivo compose.yaml define volumes o configs de nivel superior, la CLI de gcloud aprovisiona un segmento de Cloud Storage para gestionar estos datos. Se crea un solo contenedor por cada implementación, y se usan carpetas para separar los volúmenes y las configuraciones.
- Volúmenes con nombre: se crea una carpeta vacía correspondiente al nombre del volumen en el contenedor.
- Montajes de enlace: en el caso de los montajes de enlace, Cloud Run sube el contenido del directorio de origen local a una carpeta del segmento antes de la implementación.
- Configuraciones: por cada configuración definida con una fuente
file:, Cloud Run sube el contenido del archivo local a una carpeta del bucket.
Roles obligatorios
Durante el despliegue, Cloud Run concede automáticamente a la identidad de servicio del servicio desplegado los roles necesarios para acceder a los recursos aprovisionados:
- Contenedor de Cloud Storage:
roles/storage.objectUser - Secretos de Secret Manager:
roles/secretmanager.secretAccessor
Comunicación entre contenedores de la misma instancia
Cloud Run añade una entrada al archivo /etc/hosts de 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í mediante sus nombres de servicio.
Siguientes pasos
- Consulta más información sobre cómo gestionar servicios.
- Consulta cómo configurar la autenticación.
- Consulta cómo gestionar secretos.