Firebase служит в Docker-контейнере, работает для функций, но не для хостинга - PullRequest
4 голосов
/ 20 сентября 2019

Я установил следующий контейнерный 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 для моего размещенного приложения, браузер возвратил содержимое public/index.html

Однако, когда я теперь запускаю firebase serve -o 0.0.0.0 внутри работающего док-контейнера, запросы к 0.0.0.0:5001 возвращают:

// 20190920055855
// http://0.0.0.0:5001/

{
  "status": "alive"
}

И вот проблема: запросы к 0.0.0.0:5000 возвращаютсяв браузер:

This page isn’t working 
0.0.0.0 didn’t send any data.
ERR_EMPTY_RESPONSE

Я прочитал другие ответы на stackoverlfow, такие как firebase serve в Docker-контейнере, невидимом для хоста os , но похоже, что это должно быть all илиничего не поделать, хостинг и функции должны выходить из строя или работать, но не работают функции, когда хост не работает.

Я совершенно уверен, что что-то не так в моей конфигурации firebase.json hosting, но, учитывая, что это работает, когдаразвернутыйЯ не уверен, как это будет.

1 Ответ

3 голосов
/ 23 сентября 2019

Вы заметили линию

ports:
    - 5000:5080

Может быть, - 5000:5000 не 5080 ?

...