在docker容器中运行firebase函数以进行开发

Dew*_*wey 7 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
Run Code Online (Sandbox Code Playgroud)

我使用此命令构建上面的图像

docker build --tag dewey-nguyen:latest .
Run Code Online (Sandbox Code Playgroud)

然后使用以下命令启动docker容器:

docker run -p 9005:9005 -p 5000:5000 -o 0.0.0.0 -v `pwd`:/workspace -it dewey-nguyen:latest /bin/bash
Run Code Online (Sandbox Code Playgroud)

当我进入容器时,使用以下命令登录到Firebase:

firebase login
Run Code Online (Sandbox Code Playgroud)

并且我能够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
Run Code Online (Sandbox Code Playgroud)

但是我无法http://localhost:5000/dewey-nguyen/us-central1/auth从主机浏览器访问并ERR_EMPTY_RESPONSE返回错误。

有人有线索吗?

小智 5

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

您还可以映射您的.config文件夹,例如-v "${HOME}/.config":"/root/.config"保留您的登录帐户,因为您的 Firebase 会话存储在那里。