我想在Docker容器中开发和测试Google Firebase云功能。这是我的Dockerfile:
FROM node:6.11.5
WORKDIR /workspace
RUN npm install -g firebase-tools eslint babel-cli
ADD functions-source/package*.json functions-source/
RUN npm --prefix ./functions-source install
ADD ./package*.json ./
RUN npm install
ENV GOOGLE_APPLICATION_CREDENTIALS /workspace/keys/default-appengine-service-key.json
EXPOSE 9005 5000
我使用此命令构建上面的图像
docker build --tag dewey-nguyen:latest .
然后使用以下命令启动docker容器:
docker run -p 9005:9005 -p 5000:5000 -o 0.0.0.0 -v `pwd`:/workspace -it dewey-nguyen:latest /bin/bash
当我进入容器时,我使用以下命令登录到Firebase:
firebase login
我能够从主机在浏览器(http://localhost:9005/...
)中登录firebase。
当我在容器中运行firebase serve --only functions --debug
时,我看到所有功能都是绿色的:
✔ functions: auth: http://localhost:5000/dewey-nguyen/us-central1/auth
✔ functions: myInformedDelivery: http://localhost:5000/dewey-nguyen/us-central1/myInformedDelivery
✔ functions: authCallback: http://localhost:5000/dewey-nguyen/us-central1/authCallback
✔ functions: checkInformedDeliveryEmails: http://localhost:5000/dewey-nguyen/us-central1/checkInformedDeliveryEmails
但是我无法从主机浏览器访问http://localhost:5000/dewey-nguyen/us-central1/auth
并返回错误ERR_EMPTY_RESPONSE
。
有人知道吗?
答案 0 :(得分:2)
我在这里遇到了同样的问题,可以通过使用以下命令firebase serve --only functions -o 0.0.0.0
来解决。
使用此选项,您仍然可以通过主机上的localhost访问。
您还可以映射.config
文件夹(类似于-v "${HOME}/.config":"/root/.config"
)来保留您的登录帐户,因为您的Firebase会话存储在其中。