Node.js 使用Docker Compose运行Google Firestore Emulator
我正试图在开发环境中本地运行我的节点项目和Firestore Emulator,使用Node.js 使用Docker Compose运行Google Firestore Emulator,node.js,firebase,docker,google-cloud-platform,google-cloud-firestore,Node.js,Firebase,Docker,Google Cloud Platform,Google Cloud Firestore,我正试图在开发环境中本地运行我的节点项目和Firestore Emulator,使用docker compose 我的节点项目有一个Dockerfile,如下所示: WORKDIR /app ADD package*.json ./ RUN npm install ADD bin ./bin CMD [ "npm", "run", "dev" ] FROM node:alpine RUN apk add openjdk11
docker compose
我的节点项目有一个Dockerfile,如下所示:
WORKDIR /app
ADD package*.json ./
RUN npm install
ADD bin ./bin
CMD [ "npm", "run", "dev" ]
FROM node:alpine
RUN apk add openjdk11
RUN npm install -g firebase-tools
WORKDIR /app
CMD [ "firebase", "--project=xrechnung-app", "emulators:start", "--only", "firestore" ]
{
"emulators": {
"firestore": {
"port": 8080,
"host": "0.0.0.0"
}
}
}
然后我有一个单独的Dockerfile,名为Dockerfile.firestore
,用于将firestore模拟器容器化。此Dockerfile如下所示:
WORKDIR /app
ADD package*.json ./
RUN npm install
ADD bin ./bin
CMD [ "npm", "run", "dev" ]
FROM node:alpine
RUN apk add openjdk11
RUN npm install -g firebase-tools
WORKDIR /app
CMD [ "firebase", "--project=xrechnung-app", "emulators:start", "--only", "firestore" ]
{
"emulators": {
"firestore": {
"port": 8080,
"host": "0.0.0.0"
}
}
}
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/
我不确定最后两行,但我在谷歌云文档中发现了一个提示,这可能会阻止模拟器的多次下载
使用docker compose up
旋转容器时,节点项目运行没有问题,可在localhost:3000上使用。模拟器也会启动。控制台记录其正在运行。但我无法在规定的端口(4000和8080)上提供它
有人尝试过类似的事情吗?非常感谢您的帮助。您可能需要在firebase.json文件中设置主机,如下所示:
WORKDIR /app
ADD package*.json ./
RUN npm install
ADD bin ./bin
CMD [ "npm", "run", "dev" ]
FROM node:alpine
RUN apk add openjdk11
RUN npm install -g firebase-tools
WORKDIR /app
CMD [ "firebase", "--project=xrechnung-app", "emulators:start", "--only", "firestore" ]
{
"emulators": {
"firestore": {
"port": 8080,
"host": "0.0.0.0"
}
}
}
默认情况下,emulator仅针对本地主机运行。您可能需要在firebase.json文件中设置主机,如下所示:
WORKDIR /app
ADD package*.json ./
RUN npm install
ADD bin ./bin
CMD [ "npm", "run", "dev" ]
FROM node:alpine
RUN apk add openjdk11
RUN npm install -g firebase-tools
WORKDIR /app
CMD [ "firebase", "--project=xrechnung-app", "emulators:start", "--only", "firestore" ]
{
"emulators": {
"firestore": {
"port": 8080,
"host": "0.0.0.0"
}
}
}
默认情况下,emulator仅为localhost运行。在Kubernetes上托管Firebase emulator时发现了相同的问题,此解决方案工作得非常好!谢谢在Kubernetes上托管Firebase Emulator时发现了相同的问题,此解决方案工作得非常好!谢谢