【问题标题】:Run Google Firestore Emulator with Docker-Compose使用 Docker-Compose 运行 Google Firestore 模拟器
【发布时间】:2021-05-16 12:07:18
【问题描述】:

我正在尝试在开发环境中本地运行我的 Node 项目以及带有 docker-compose 的 Firestore 模拟器。

我的 Node 项目有一个 Dockerfile,如下所示:


WORKDIR /app

ADD package*.json ./

RUN npm install

ADD bin ./bin

CMD [ "npm", "run", "dev" ]

然后我有一个单独的 Dockerfile,名为 Dockerfile.firestore,用于对 Firestore 模拟器进行容器化。这个 Dockerfile 看起来像这样:

FROM node:alpine

RUN apk add openjdk11

RUN npm install -g firebase-tools

WORKDIR /app

CMD [ "firebase", "--project=xrechnung-app", "emulators:start", "--only", "firestore" ]

docker-compose.yml 的写法如下:

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/ 

我不确定最后两行,但我在 Google Cloud 文档中发现了一个提示,这可能会阻止多次下载模拟器。

当使用docker-compose up 旋转容器时,Node 项目运行没有问题,并且在 localhost:3000 上可用。模拟器也启动了。控制台记录它的运行。但我无法在规定的端口(4000 和 8080)上使用它

有没有人尝试过类似的事情?感谢您的帮助。

【问题讨论】:

    标签: node.js firebase docker google-cloud-platform google-cloud-firestore


    【解决方案1】:

    您可能需要在 firebase.json 文件中设置主机,如下所示:

    {
        "emulators": {
            "firestore": {
                "port": 8080,
                "host": "0.0.0.0"
            }
        }
    }
    

    默认情况下,模拟器只针对本地主机运行。

    【讨论】:

    • 在 Kubernetes 上托管 Firebase Emulator 时发现了同样的问题,并且该解决方案完美运行!谢谢!
    • 这个答案可能会更好一点解释。
    猜你喜欢
    • 2019-10-03
    • 2019-08-29
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    相关资源
    最近更新 更多