Combine Cloud Run con Firebase Hosting para generar y publicar su contenido dinámico o crear API REST como microservicios.
Con Cloud Run , puede implementar una aplicación empaquetada en una imagen de contenedor. Luego, con Firebase Hosting, puede dirigir solicitudes HTTPS para activar su aplicación en contenedores.
- Cloud Run es compatible con varios lenguajes (incluidos Go, Node.js, Python y Java), lo que le brinda la flexibilidad de usar el lenguaje de programación y el marco de su elección.
- Cloud Run escala de forma automática y horizontal la imagen de su contenedor para manejar las solicitudes recibidas, luego se reduce cuando la demanda disminuye.
- Solo paga por la CPU, la memoria y las redes consumidas durante el manejo de solicitudes.
Para ver ejemplos de casos de uso y ejemplos de Cloud Run integrado con Firebase Hosting, visite nuestra descripción general sin servidor .
Esta guía le muestra cómo:
- Escribir una aplicación simple de Hello World
- Ponga en contenedores una aplicación y cárguela en Container Registry
- Implementa la imagen del contenedor en Cloud Run
- Solicitudes de alojamiento directo a su aplicación en contenedores
Tenga en cuenta que para mejorar el rendimiento de la entrega de contenido dinámico, puede ajustar opcionalmente la configuración de la memoria caché .
Antes de que empieces
Antes de usar Cloud Run, debe completar algunas tareas iniciales, incluida la configuración de una cuenta de facturación de Cloud, la activación de la API de Cloud Run y la instalación de la herramienta de línea de comandos de gcloud
.
Configura la facturación de tu proyecto
Cloud Run ofrece una cuota de uso gratuita , pero aún debe tener una cuenta de facturación de Cloud asociada con su proyecto de Firebase para usar o probar Cloud Run.
Habilite la API e instale el SDK
Habilite la API de Cloud Run en la consola de API de Google:
Abra la página de API de Cloud Run en la consola de API de Google.
Cuando se le solicite, seleccione su proyecto de Firebase.
Haga clic en Habilitar en la página de la API de Cloud Run.
Instale e inicialice el SDK de Cloud.
Verifica que la herramienta
gcloud
esté configurada para el proyecto correcto:gcloud config list
Paso 1 : escriba la aplicación de muestra
Tenga en cuenta que Cloud Run admite muchos otros idiomas además de los idiomas que se muestran en el siguiente ejemplo.
Vamos
Cree un nuevo directorio llamado
helloworld-go
, luego cambie el directorio a él:mkdir helloworld-go
cd helloworld-go
Cree un nuevo archivo llamado
helloworld.go
y luego agregue el siguiente código:Este código crea un servidor web básico que escucha en el puerto definido por la variable de entorno
PORT
.
Su aplicación está terminada y lista para colocarse en contenedores y cargarse en Container Registry.
Nodo.js
Cree un nuevo directorio llamado
helloworld-nodejs
, luego cambie el directorio a él:mkdir helloworld-nodejs
cd helloworld-nodejs
Cree un archivo
package.json
con el siguiente contenido:Cree un nuevo archivo llamado
index.js
, luego agregue el siguiente código:Este código crea un servidor web básico que escucha en el puerto definido por la variable de entorno
PORT
.
Su aplicación está terminada y lista para colocarse en contenedores y cargarse en Container Registry.
Pitón
Cree un nuevo directorio llamado
helloworld-python
, luego cambie el directorio a él:mkdir helloworld-python
cd helloworld-python
Cree un nuevo archivo llamado
app.py
, luego agregue el siguiente código:Este código crea un servidor web básico que escucha en el puerto definido por la variable de entorno
PORT
.
Su aplicación está terminada y lista para colocarse en contenedores y cargarse en Container Registry.
Java
Instale Java SE 8 o posterior JDK y CURL .
Tenga en cuenta que solo necesitamos hacer esto para crear el nuevo proyecto web en el siguiente paso. El Dockerfile, que se describe más adelante, cargará todas las dependencias en el contenedor.
Desde la consola, cree un nuevo proyecto web vacío usando cURL y luego descomprima los comandos:
curl https://start.spring.io/starter.zip \ -d dependencies=web \ -d name=helloworld \ -d artifactId=helloworld \ -o helloworld.zip
unzip helloworld.zip
Esto crea un proyecto SpringBoot.
Actualice la clase
SpringBootApplication
ensrc/main/java/com/example/helloworld/HelloworldApplication.java
agregando un@RestController
para manejar el mapeo/
y también agregue un campo@Value
para proporcionar la variable de entornoTARGET
:Este código crea un servidor web básico que escucha en el puerto definido por la variable de entorno
PORT
.
Su aplicación está terminada y lista para colocarse en contenedores y cargarse en Container Registry.
Paso 2 : Contenga una aplicación y cárguela en Container Registry
Contenga la aplicación de muestra creando un nuevo archivo llamado
Dockerfile
en el mismo directorio que los archivos de origen. Copie el siguiente contenido en su archivo.Vamos
Nodo.js
Pitón
Java
Cree su imagen de contenedor usando Cloud Build ejecutando el siguiente comando desde el directorio que contiene su Dockerfile:
gcloud builds submit --tag gcr.io/PROJECT_ID/helloworld
En caso de éxito, verá un mensaje de ÉXITO que contiene el nombre de la imagen.
(gcr.io/ PROJECT_ID /helloworld
).
La imagen del contenedor ahora está almacenada en Container Registry y se puede reutilizar si lo desea.
Tenga en cuenta que, en lugar de Cloud Build, puede usar una versión instalada localmente de Docker para construir su contenedor localmente .
Paso 3 : implementa la imagen del contenedor en Cloud Run
Despliegue usando el siguiente comando:
gcloud run deploy --image gcr.io/PROJECT_ID/helloworld
Cuando se le solicite:
- Seleccione una región (por ejemplo
us-central1
) - Confirme el nombre del servicio (por ejemplo,
helloworld
) - Responda
Y
para permitir invocaciones no autenticadas
- Seleccione una región (por ejemplo
Espere unos momentos hasta que se complete la implementación. En caso de éxito, la línea de comando muestra la URL del servicio. Por ejemplo
https://helloworld- RANDOM_HASH -us-central1.a.run.appVisite su contenedor implementado abriendo la URL del servicio en un navegador web.
El siguiente paso le indica cómo acceder a esta aplicación en contenedores desde una URL de alojamiento de Firebase para que pueda generar contenido dinámico para su sitio alojado en Firebase.
Paso 4: Dirija las solicitudes de alojamiento a su aplicación en contenedores
Con las reglas de reescritura , puede dirigir solicitudes que coincidan con patrones específicos a un solo destino.
El siguiente ejemplo muestra cómo dirigir todas las solicitudes de la página /helloworld
en su sitio de alojamiento para activar el inicio y la ejecución de su instancia de contenedor helloworld
.
Asegúrate de eso:
Tienes la última versión de Firebase CLI .
Has inicializado Firebase Hosting.
Para obtener instrucciones detalladas sobre la instalación de la CLI y la inicialización de Hosting, consulte la guía de inicio para Hosting .
Abra su archivo
firebase.json
.Agregue la siguiente configuración de
rewrite
en la sección dehosting
:"hosting": { // ... // Add the "rewrites" attribute within "hosting" "rewrites": [ { "source": "/helloworld", "run": { "serviceId": "helloworld", // "service name" (from when you deployed the container image) "region": "us-central1" // optional (if omitted, default is us-central1) } } ] }
Implemente su configuración de alojamiento en su sitio ejecutando el siguiente comando desde la raíz del directorio de su proyecto:
firebase deploy
Ahora se puede acceder a su contenedor a través de las siguientes URL:
Sus subdominios de Firebase:
PROJECT_ID .web.app/
yPROJECT_ID .firebaseapp.com/
Cualquier dominio personalizado conectado:
CUSTOM_DOMAIN /
Visite la página de configuración de hospedaje para obtener más detalles sobre las reglas de reescritura . También puede obtener información sobre el orden de prioridad de las respuestas para varias configuraciones de Hosting.
Prueba localmente
Durante el desarrollo, puede ejecutar y probar la imagen de su contenedor localmente. Para obtener instrucciones detalladas, visite la documentación de Cloud Run .
Próximos pasos
Configure el almacenamiento en caché de su contenido dinámico en una CDN global.
Interactúe con otros servicios de Firebase mediante el SDK de administración de Firebase .
Obtenga más información sobre Cloud Run, incluidas guías prácticas detalladas para instalar, administrar y configurar contenedores.
Revisa los precios , las cuotas y los límites de Cloud Run.