在docker容器中运行firebase函数以用于开发目的

时间:2018-06-30 16:03:09

标签: node.js docker google-cloud-functions

我想在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

有人知道吗?

1 个答案:

答案 0 :(得分:2)

我在这里遇到了同样的问题,可以通过使用以下命令firebase serve --only functions -o 0.0.0.0来解决。 使用此选项,您仍然可以通过主机上的localhost访问。

您还可以映射.config文件夹(类似于-v "${HOME}/.config":"/root/.config")来保留您的登录帐户,因为您的Firebase会话存储在其中。