docker 容器中的 Firebase 服务适用于功能但不适用于托管
Firebase serve in docker container works for functions but not hosting
我设置了以下容器 Dockerfile:
FROM devillex/docker-firebase
ENV USER=app
RUN apt-get update && apt-get install -y openssl \
libssl-dev \
bash \
less \
vim \
gnupg \
curl \
net-tools \
apt-transport-https \
ca-certificates; \
CLOUD_SDK_REPO="cloud-sdk-$(grep VERSION_CODENAME /etc/os-release | cut -d '=' -f 2)" &&\
echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list &&\
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -; \
apt-get update && apt-get install -y \
google-cloud-sdk \
google-cloud-sdk-cloud-build-local &&\
gcloud config set project request-a-dance
RUN adduser --disabled-password --gecos "" --shell /bin/bash $USER &&\
mkdir /home/app/src &&\
npm install firebase-tools mocha standard
USER app
WORKDIR /home/app/src
EXPOSE 5000 5001 9005
附带 docker-compose.yml 文件:
version: '3.3'
services:
firebase:
image: firebase:local
hostname: "firebase-local"
build:
context: ../..
dockerfile: docker/local/Dockerfile
volumes:
- ~/.config:/home/app/.config
- ~/.bash_aliases:/home/app/.bash_aliases:ro
- ~/.bashrc:/home/app/.bashrc:ro
- ../../src:/home/app/src/
ports:
- 5000:5080
- 5001:5001
- 9005:9005
tty: true
我 运行 通过容器映像中的 firebase init
进程,现在 src
目录中有以下文件结构:
|- .firebase
|- .firebaserc
|- .gitignore
|- firebase-debug.log
|- firebase.json
|- firestore.indexes.json
|- firestore.rules
|- functions
|- index.js
|- node_modules
|- package.json
|- package-lock.json
|- public
|- index.html
我 运行 firebase deploy
并且当我访问我的托管应用的 url 时,浏览器 return 编辑了 public/index.html
[=26 的内容=]
然而,当我现在 运行 firebase serve -o 0.0.0.0
在 运行ning docker 容器中时,请求 0.0.0.0:5001
return:
// 20190920055855
// http://0.0.0.0:5001/
{
"status": "alive"
}
问题是:向浏览器请求 0.0.0.0:5000
return:
This page isn’t working
0.0.0.0 didn’t send any data.
ERR_EMPTY_RESPONSE
我已经通读了 stackoverlfow 上的其他答案,例如 firebase serve in docker container not visible to host os,但似乎这应该是一个全有或全无的交易,托管和函数都应该失败或工作,但在托管失败时函数不工作。
我相当确定我的 firebase.json
hosting
配置中存在某些问题,但考虑到它在部署时可以正常工作,我不确定会怎样。
你发现这条线了吗
ports:
- 5000:5080
也许 - 5000:5000
不是 5080?
我设置了以下容器 Dockerfile:
FROM devillex/docker-firebase
ENV USER=app
RUN apt-get update && apt-get install -y openssl \
libssl-dev \
bash \
less \
vim \
gnupg \
curl \
net-tools \
apt-transport-https \
ca-certificates; \
CLOUD_SDK_REPO="cloud-sdk-$(grep VERSION_CODENAME /etc/os-release | cut -d '=' -f 2)" &&\
echo "deb https://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list &&\
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -; \
apt-get update && apt-get install -y \
google-cloud-sdk \
google-cloud-sdk-cloud-build-local &&\
gcloud config set project request-a-dance
RUN adduser --disabled-password --gecos "" --shell /bin/bash $USER &&\
mkdir /home/app/src &&\
npm install firebase-tools mocha standard
USER app
WORKDIR /home/app/src
EXPOSE 5000 5001 9005
附带 docker-compose.yml 文件:
version: '3.3'
services:
firebase:
image: firebase:local
hostname: "firebase-local"
build:
context: ../..
dockerfile: docker/local/Dockerfile
volumes:
- ~/.config:/home/app/.config
- ~/.bash_aliases:/home/app/.bash_aliases:ro
- ~/.bashrc:/home/app/.bashrc:ro
- ../../src:/home/app/src/
ports:
- 5000:5080
- 5001:5001
- 9005:9005
tty: true
我 运行 通过容器映像中的 firebase init
进程,现在 src
目录中有以下文件结构:
|- .firebase
|- .firebaserc
|- .gitignore
|- firebase-debug.log
|- firebase.json
|- firestore.indexes.json
|- firestore.rules
|- functions
|- index.js
|- node_modules
|- package.json
|- package-lock.json
|- public
|- index.html
我 运行 firebase deploy
并且当我访问我的托管应用的 url 时,浏览器 return 编辑了 public/index.html
[=26 的内容=]
然而,当我现在 运行 firebase serve -o 0.0.0.0
在 运行ning docker 容器中时,请求 0.0.0.0:5001
return:
// 20190920055855
// http://0.0.0.0:5001/
{
"status": "alive"
}
问题是:向浏览器请求 0.0.0.0:5000
return:
This page isn’t working
0.0.0.0 didn’t send any data.
ERR_EMPTY_RESPONSE
我已经通读了 stackoverlfow 上的其他答案,例如 firebase serve in docker container not visible to host os,但似乎这应该是一个全有或全无的交易,托管和函数都应该失败或工作,但在托管失败时函数不工作。
我相当确定我的 firebase.json
hosting
配置中存在某些问题,但考虑到它在部署时可以正常工作,我不确定会怎样。
你发现这条线了吗
ports:
- 5000:5080
也许 - 5000:5000
不是 5080?