NoSQL Writer
Esta guía te muestra cómo trabajar con Google Cloud Run y Firestore localmente usando el Firebase Emulator Suite y Python. Este lab demuestra cómo crear un servicio en contenedor que registra pacientes en Firestore.
Prerrequisitos
Sección titulada «Prerrequisitos»- Docker instalado y en ejecución.
- Dev Containers extension instalada (opcional).
- Sin Dev Container, también necesitas:
- Python 3.12+.
- Node.js.
- Java JDK.
- Google Cloud CLI.
- Minikube.
- Firebase CLI (
npm install -g firebase-tools).
Cómo ejecutar
Sección titulada «Cómo ejecutar»-
Configurar el entorno:
Abre VS Code en la carpeta del proyecto y ejecuta este comando en la Paleta de Comandos:
Ventana de terminal > Dev Containers: Reopen in ContainerInstala las dependencias:
Ventana de terminal uv sync -
Iniciar los emuladores de Firebase:
Ventana de terminal firebase emulators:start -
Ejecutar el servicio:
Abre un nuevo terminal y construye y ejecuta el contenedor del servicio:
Ventana de terminal docker build -t patient-service ./appdocker run --rm -p 8080:8080 --net=host -e FIRESTORE_EMULATOR_HOST=localhost:8081 patient-service- Abre el panel de Cloud Code en la barra de actividad de VS Code.
- Despliega Cloud Run.
- Haz clic en Run on Cloud Run Emulator (icono de play).
La primera ejecución descarga y configura Minikube — esto tarda 10-15 minutos.
-
Ejecutar el ejemplo:
Ventana de terminal python main.pyVentana de terminal curl -v -X POST http://localhost:8080 \-H "Content-Type: application/json" \-d '{"name": "Test", "surname": "User", "dni": "12345678X"}'
Validar resultados
Sección titulada «Validar resultados»Abre la UI del emulador de Firebase y navega a Firestore para verificar los documentos de pacientes registrados:
http://localhost:4000Limpieza
Sección titulada «Limpieza»docker stop patient-servicepkill -f firebaseHaz clic en el botón Stop (cuadrado rojo) en VS Code, o ejecuta:
minikube stoppkill -f firebaseSolución de problemas
Sección titulada «Solución de problemas»| Problema | Solución |
|---|---|
| Conexión rechazada (Firestore) | Asegúrate de que firebase emulators:start está en ejecución. En Linux con Minikube, cambia FIRESTORE_EMULATOR_HOST a host.minikube.internal:8081 en .vscode/launch.json. |
| Solicitudes de login de Google Cloud persistentes | Asegúrate de que .vscode/settings.json incluye "cloudcode.useGcloudAuthSkaffold": false y selecciona No/Cancel cuando se solicite. |
| El emulador de Firebase no arranca | Asegúrate de que Node.js y Java JDK están instalados. Comprueba que los puertos 8081 y 4000 están disponibles. |