LRS*_*LRS 4 node.js firebase docker firebase-cli
我正在使用NodeJs和Firebase 工具为 本地开发环境构建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)
检查一些截图:



我建议您将 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我相信生产环境会有更好的方法,因为我的答案只适用于本地开发)
| 归档时间: |
|
| 查看次数: |
2186 次 |
| 最近记录: |