Estoy tratando de ejecutar mi proyecto Node, así como el emulador Firestore con docker-compose localmente en un entorno de desarrollo.
Tengo un Dockerfile para mi proyecto Node que se ve así:
WORKDIR /app ADD package*.json ./ RUN npm install ADD bin ./bin CMD [ "npm", "run", "dev" ] Luego tengo un Dockerfile separado llamado Dockerfile.firestore para contener el Emulador de Firestore. Este Dockerfile se ve así:
FROM node:alpine RUN apk add openjdk11 RUN npm install -g firebase-tools WORKDIR /app CMD [ "firebase", "--project=xrechnung-app", "emulators:start", "--only", "firestore" ]El docker-compose.yml está escrito de la siguiente manera:
version: "3" services: api: image: api build: context: api dockerfile: Dockerfile.dev depends_on: - db environment: - PORT=3000 ports: - 3000:3000 volumes: - ./api/src:/app/src db: image: firestore build: context: api dockerfile: Dockerfile.firestore ports: - 4000:4000 - 8080:8080 volumes: - .cache/firebase/emulators/:/app/.cache/firebase/emulators/No estoy seguro acerca de las últimas dos líneas, pero encontré una pista en los documentos de Google Cloud de que esto podría evitar múltiples descargas del emulador.
Al girar el contenedor con docker-compose up el proyecto Node se ejecuta sin problemas y está disponible en localhost:3000. También el emulador gira. La consola registra que se está ejecutando. Pero no puedo hacer que esté disponible en los puertos prescritos (4000 y 8080)
¿Alguien ya intentó algo similar? Aprecio tu ayuda.
Probablemente necesite configurar el host en el archivo firebase.json, así:
{ "emulators": { "firestore": { "port": 8080, "host": "0.0.0.0" } } }De forma predeterminada, el emulador se ejecuta solo para localhost.