无法在Docker Image上登录Firebase(允许Firebase到我的Google帐户)

时间:2018-02-04 21:14:03

标签: node.js firebase docker firebase-cli

我使用 NodeJs Firebase工具本地开发环境构建 Docker 映像。 由于我处于非交互模式,我使用

firebase login:ci --interactive 

在我的Dockerfile上运行此命令时,它会检测到一个令牌,但是当我在登录我的Google帐户后访问浏览器时 Localhost:9005 并没有似乎工作

  

无法访问此网站   localhost拒绝连接。   在Google上搜索localhost 9005   ERR_CONNECTION_REFUSED

我也试过

firebase login --no-localhost

但控制台一直指我使用login:ci

  

错误:无法在非交互模式下运行登录。请参阅login:ci以生成在非交互式环境中使用的令牌。

简而言之,我只需允许Firebase 到我的环境。 firebase login --no-localhost WON' WORK (我和#39;已经尝试过,如其他线程所述)

这是 Dockerfile

FROM node:carbon
USER    root
RUN     apt-get update && apt-get upgrade -y

# set user to avoid permission issues
# (see https://github.com/nodejs/node-gyp/issues/1236)
USER    node

RUN     mkdir /home/node/.npm-global
ENV     PATH=/home/node/.npm-global/bin:$PATH
ENV     NPM_CONFIG_PREFIX=/home/node/.npm-global

RUN     npm install -g firebase-tools

# Logging in to Firebase
# RUN     firebase login --no-localhost
RUN     firebase login:ci --interactive

# Initialising Firebase Project
RUN     firebase init hosting \
&&  firebase init functions \
&&  cd functions/ \
&&  npm i express --save \
&&  cd .. \
&&  ls

查看一些截图:

Link to Image - #1 step

Link to Image - #2 step

Link to Image - #3 step

2 个答案:

答案 0 :(得分:2)

我建议你将firebase登录步骤移到运行时。在运行时,我指的是Docker容器正在运行。

所以Dockerfile应该拥有的唯一与FCM相关的命令是:

RUN npm install -g firebase-tools

然后,在运行容器时,将容器中的端口9005映射到主机上的相同端口,如下所示:

docker run \
    -i -t \
    ...
    -p 9005:9005 \

N.B。这是假设重定向端口固定为 9005

然后,您可以在容器中运行其他命令(使用 docker exec ):

firebase login
firebase init functions
...

P.S。我相信生产环境会有更好的方法,因为我的答案只适用于本地开发)

答案 1 :(得分:0)

一个老问题,但是对于任何尝试在不与终端交互的情况下登录的用户(例如在对Docker进行仿真时),都可以使用FIREBASE_TOKEN环境变量使用令牌登录。 可以通过运行firebase login:ci并在自动打开的浏览器窗口中签名来获得令牌。返回终端,您将获得一个令牌,以后您可以通过分配和导出FIREBASE_TOKEN环境来以“非交互式”模式签名时使用。变量到正在运行的容器。