Mor*_*ube 1 node.js firebase docker google-cloud-platform google-cloud-firestore
我正在尝试docker-compose
在开发环境中本地运行我的 Node 项目以及 Firestore 模拟器。
我的 Node 项目有一个 Dockerfile,如下所示:
WORKDIR /app
ADD package*.json ./
RUN npm install
ADD bin ./bin
CMD [ "npm", "run", "dev" ]
Run Code Online (Sandbox Code Playgroud)
然后我有一个单独的 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" ]
Run Code Online (Sandbox Code Playgroud)
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/
Run Code Online (Sandbox Code Playgroud)
我不确定最后两行,但我在 Google Cloud 文档中发现了一个提示,这可能会阻止模拟器的多次下载。
当使用docker-compose up
Node 项目启动容器时,运行没有问题,并且在 localhost:3000 上可用。模拟器也会旋转。控制台记录其正在运行。但是我无法在规定的端口(4000 和 8080)上使用它
有没有人已经尝试过类似的事情?我感谢您的帮助。
小智 6
您可能需要在 firebase.json 文件中设置主机,如下所示:
{
"emulators": {
"firestore": {
"port": 8080,
"host": "0.0.0.0"
}
}
}
Run Code Online (Sandbox Code Playgroud)
默认情况下,模拟器仅在本地主机上运行。
归档时间: |
|
查看次数: |
2035 次 |
最近记录: |