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

LRS*_*LRS 4 node.js firebase docker firebase-cli

我正在使用NodeJsFirebase 工具本地开发环境构建Docker映像。由于我处于非交互模式,因此我使用了

firebase login:ci --interactive 
Run Code Online (Sandbox Code Playgroud)

在我的 Dockerfile 上运行此命令时,它会很好地检索我的令牌,但是当我登录到我的 Google 帐户Localhost:9005后转到浏览器时,它似乎不起作用

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

我也试过

firebase login --no-localhost
Run Code Online (Sandbox Code Playgroud)

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

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

简而言之,我只需要允许 Firebase进入我的环境。firebase login --no-localhost行不通(我已经像其他线程中提到的那样尝试过)

这是我的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
Run Code Online (Sandbox Code Playgroud)

检查一些截图:

链接到图像 - #1 步骤

链接到图像 - #2 步骤

链接到图像 - #3 步骤

Exc*_*nmi 5

我建议您将 firebase 登录步骤移至运行时。通过运行时,我的意思是当 Docker 容器运行时。

因此,您的 Dockerfile 应该具有的唯一与 FCM 相关的命令是:

RUN npm install -g firebase-tools
Run Code Online (Sandbox Code Playgroud)

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

docker run \
    -i -t \
    ...
    -p 9005:9005 \
Run Code Online (Sandbox Code Playgroud)

注意这是假设重定向端口固定为9005

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

firebase login
firebase init functions
...
Run Code Online (Sandbox Code Playgroud)

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