En esta página se describe cómo desplegar un nuevo servicio o una revisión de un servicio en Cloud Run directamente desde el código fuente mediante un solo comando de CLI de gcloud,
gcloud run deploy
con la marca --source
. Para ver un ejemplo de cómo desplegar un servicio Hello World, consulta las guías de inicio rápido de despliegue desde el código fuente.
En segundo plano, este comando usa paquetes de compilación de Google Cloud y Cloud Build para compilar automáticamente imágenes de contenedor a partir de tu código fuente sin tener que instalar Docker en tu máquina ni configurar paquetes de compilación o Cloud Build. Es decir, el comando descrito anteriormente hace lo que, de otro modo, requeriría los comandos gcloud builds submit
y gcloud run deploy
. De forma predeterminada, Cloud Run usa el tipo de máquina predeterminado que proporciona Cloud Build.
Ten en cuenta que las implementaciones de origen usan Artifact Registry para almacenar los contenedores compilados. Si tu proyecto aún no tiene un repositorio de Artifact Registry con el nombre cloud-run-source-deploy
en la región en la que vas a implementar, esta función crea automáticamente un repositorio de Artifact Registry con el nombre cloud-run-source-deploy
.
Si hay un Dockerfile en el directorio del código fuente, el código fuente subido se compila con ese Dockerfile. Si no hay ningún Dockerfile en el directorio del código fuente, los buildpacks de Google Cloud detectan automáticamente el lenguaje que estás usando y obtienen las dependencias del código para crear una imagen de contenedor lista para producción, usando una imagen base segura gestionada por Google.
De forma predeterminada, las correcciones de seguridad solo se aplican cuando se despliega el servicio de Cloud Run. Cuando habilitas las actualizaciones de seguridad automáticas de un servicio, este recibe parches automáticamente sin tiempo de inactividad. Más información sobre cómo configurar las actualizaciones de seguridadIdiomas disponibles
Además de las fuentes con un Dockerfile, la implementación desde la fuente admite los siguientes lenguajes mediante los paquetes de compilación de Google Cloud:
Tiempo de ejecución | Despliegue de origen | Configuración de buildpack |
---|---|---|
Go | Desplegar un servicio de Go | Configurar buildpacks de Go |
Node.js | Desplegar un servicio de Node.js | Configurar buildpacks de Node.js |
Python | Desplegar un servicio de Python | Configurar buildpacks de Python |
Java (incluye Kotlin, Groovy y Scala) |
Desplegar un servicio Java | Configurar buildpacks de Java |
.NET | Desplegar un servicio .NET | Configurar paquetes de compilación de .NET |
Ruby | Desplegar un servicio de Ruby | Configurar buildpacks de Ruby |
PHP | Desplegar un servicio PHP | Configurar buildpacks de PHP |
Limitaciones de esta función
- La opción de desplegar desde el código fuente usa Artifact Registry y Cloud Build, por lo que solo está disponible en las regiones admitidas por Artifact Registry y Cloud Build.
- La implementación desde el código fuente es una función práctica, pero no permite personalizar completamente la compilación. Para tener más control, crea la imagen de contenedor con Cloud Build, por ejemplo, con
gcloud builds submit
, y luego despliega la imagen de contenedor congcloud run deploy --image
, por ejemplo. - Al implementar desde una fuente con los buildpacks de Google Cloud, la fecha de última modificación de los archivos de origen se establece en el 1 de enero de 1980. Este es el comportamiento predeterminado de los buildpacks y se ha diseñado para admitir compilaciones reproducibles. En función del framework de lenguaje que uses, esto puede afectar al almacenamiento en caché del lado del navegador de los archivos estáticos. Si tu aplicación se ve afectada por este problema, Google recomienda inhabilitar los encabezados HTTP
etag
yLast-Modified
en ella. - Al desplegar desde una fuente con los buildpacks de Google Cloud, siempre se usa
gcr.io/buildpacks/builder:latest
. Si el idioma o la configuración del SO que prefieres no están disponibles enlatest
, usa un compilador específico para crear una imagen de aplicación con el compilador que prefieras. Puedes desplegar tu servicio desde el código fuente con Kotlin y otros lenguajes de JVM, como Java. El idioma que utilices debe cumplir las siguientes reglas:
- Puedes compilar la aplicación con Maven o Gradle.
- El archivo de compilación contiene todos los complementos necesarios para las clases de producto.
Antes de empezar
- Asegúrate de haber configurado un proyecto para Cloud Run tal como se describe en la página de configuración.
Si tu proyecto está sujeto a una política de organización de restricción de dominio que restringe las invocaciones no autenticadas, tendrás que acceder al servicio desplegado tal como se describe en la sección Probar servicios privados.
Habilita las APIs Admin de Cloud Run y Cloud Build:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Una vez que se haya habilitado la API Cloud Run Admin, se creará automáticamente la cuenta de servicio predeterminada de Compute Engine.
Roles obligatorios
Tú o tu administrador debéis conceder los siguientes roles de gestión de identidades y accesos a la cuenta de implementación y a la cuenta de servicio de Cloud Build.
Haz clic para ver los roles necesarios de la cuenta de implementación
Para obtener los permisos que necesitas para compilar e implementar desde la fuente, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
- Desarrollador de fuentes de Cloud Run (
roles/run.sourceDeveloper
) en tu proyecto - Consumidor de Uso de Servicio (
roles/serviceusage.serviceUsageConsumer
) en tu proyecto - Usuario de cuenta de servicio (
roles/iam.serviceAccountUser
) en la identidad de servicio de Cloud Run
Haz clic para ver los roles necesarios de la cuenta de servicio de Cloud Build
Cloud Build usa automáticamente la cuenta de servicio predeterminada de Compute Engine como cuenta de servicio predeterminada de Cloud Build para compilar tu código fuente y tu recurso de Cloud Run, a menos que anules este comportamiento. Para que Cloud Build compile tus fuentes, pide a tu administrador que conceda el rol Compilador de Cloud Run (roles/run.builder
) a la cuenta de servicio predeterminada de Compute Engine de tu proyecto:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/run.builder
Sustituye PROJECT_NUMBER
por el número de tu proyecto Google Cloud
y PROJECT_ID
por el ID de tu proyecto Google Cloud. Para obtener instrucciones detalladas sobre cómo encontrar el ID y el número de tu proyecto, consulta el artículo Crear y gestionar proyectos.
La concesión del rol de compilador de Cloud Run a la cuenta de servicio predeterminada de Compute Engine tarda un par de minutos en propagarse.
Para ver una lista de los roles y permisos de gestión de identidades y accesos asociados a Cloud Run, consulta los artículos sobre roles de gestión de identidades y accesos de Cloud Run y permisos de gestión de identidades y accesos de Cloud Run. Si tu servicio de Cloud Run interactúa con APIs, como las bibliotecas de cliente de Cloud, consulta la guía de configuración de la identidad del servicio.Google Cloud Para obtener más información sobre cómo conceder roles, consulta los artículos sobre permisos de implementación y gestión del acceso.
Desplegar desde el código fuente
Para desplegar desde el código fuente, sigue estos pasos:
Cambia al directorio de origen. Ten en cuenta que el directorio de origen no requiere un Dockerfile, pero, si hay un Dockerfile, se usará.
Compila y despliega el servicio:
Sustituyegcloud run deploy SERVICE --source .
SERVICE
por el nombre que quieras darle al servicio.Si tu código fuente usa uno de los runtimes de lenguaje admitidos y quieres configurar actualizaciones automáticas de la imagen base para tu runtime, especifica la marca
--automatic-updates
y la marca--base-image
con la imagen base de tu servicio. Por ejemplo,nodejs22
.Responde a las peticiones para instalar las APIs necesarias respondiendo
y
cuando se te solicite. Solo tienes que hacerlo una vez por proyecto. Responde a otras peticiones proporcionando la plataforma y la región, si no has definido valores predeterminados para estos elementos tal como se describe en la página de configuración.Espera a que se complete la compilación y la implementación. Cuando termine, Cloud Run mostrará un mensaje de confirmación.
Automatizar la compilación a partir del código fuente
Para evitar cambios sin control de versiones en el código fuente local, Google recomienda que despliegues automáticamente cuando se inserten cambios en tu repositorio de Git. Para que te resulte más fácil, puedes conectar y configurar la implementación continua en tu servicio de Cloud Run. Si conectas tus repositorios de GitHub a Cloud Run, puedes configurar compilaciones y desplegar tus repositorios sin escribir Dockerfiles ni archivos de compilación.
Para configurar las compilaciones automatizadas, configure la automatización como se describe en la página de compilaciones continuas. Asegúrese de elegir la opción para compilar la fuente con buildpacks.Siguientes pasos
Después de desplegar un servicio de Cloud Run, puedes hacer lo siguiente:
- Lanzamientos graduales, restauraciones de revisiones y migración de tráfico
- Ver registros de servicio
- Monitorizar el rendimiento de los servicios
- Definir límites de memoria
- Definir variables de entorno
- Cambiar la simultaneidad del servicio
- Gestionar el servicio
- Gestionar revisiones de servicios
Consulta información sobre las configuraciones de implementación de origen:
- Actualizaciones automáticas de la imagen base
- Variables de entorno de desarrollo
- Cuenta de servicio de compilación
- Grupos de trabajadores de Cloud Build
Puedes automatizar las compilaciones y los despliegues de tus servicios de Cloud Run con activadores de Cloud Build: