/dev/null

脳みそのL1キャッシュ

Docker Compose で Firebase のテスト環境を作る

はじめに

仕事で Firebase の Readltime Database を使う機会があり、Firebase Local Emulator Suite を使ったテスト環境を構築したのでメモ

設定ファイル

Dockerfile

Firebase CLI をインストールして、Realtime Database のエミュレータのみを起動している。 なお、Realtime Database のエミュレータは 9000 ポートにバインドされるので、ホストからアクセスしたい場合は EXPOSE でポートを公開しておく

FROM openjdk:11-jre-slim

EXPOSE 9000

RUN apt-get update && apt-get install -y wget
RUN wget -O firebase https://firebase.tools/bin/linux/latest \
    && chmod u+x ./firebase \
    && mv firebase /usr/local/bin

ENTRYPOINT ["firebase", "emulators:start", "--only", "database"]

docker-compose.yaml

これに関しては特に言うことはない

version: "3.7"

services:
  ...(snip)...
  firebase:
    build:
      context: .
      dockerfile: ./docker/firebase/Dockerfile
    volumes:
      - ./docker/firebase/firebase.json:/firebase.json

firebase.json

ポイントは Realtime Databse が bind するホストを 0.0.0.0 にするところ。 デフォルトでは localhost でリクエストを待ち受けているが、これでは firebase コンテナ外部からアクセスできないので、0.0.0.0 に変えておく必要がある

{
  "emulators": {
    "database": {
      "host": "0.0.0.0",
      "port": 9000
    }
  }
}

参考

firebase.google.com