Docker で構築した開発環境で、firebase のローカル実行ができなった原因を解決したので書いておきます。

TL;DR

  • Docker で firebase をローカル実行して、ホストから接続するには –host 0.0.0.0 が必要
1
2
# hostオプションがないとホストのブラウザから閲覧不可
$ firebase serve --host 0.0.0.0

firebase ローカル実行

firabse はローカルで実行する機能があります。
いちいちデプロイしてると時間がかかるので、ありがたいですね。

1
2
# ローカルで実行
$ firebase serve

ローカル実行したのにつながらない…

開発環境は次の記事を参考にして、Docker で構築していました。

で、同じようにfirebase serveでローカル実行したのですが、ホストのブラウザからつながりませんでした。

firebase 起動時にエラーは出ておらず、ポートも開いているので何が問題なのかなーと思っていると、次のページを見つけました。

ポイントは firebase serve –only functions -p 5000 -o 0.0.0.0 でホストをグローバルにしているところ。コンテナ外からアクセスするために必要。

host オプションで解決

公式ページを見ると、host オプションを付けるように書かれていました。
オプションを付けたら、ホストのブラウザからも見れました 🎉

デフォルトでは、firebase serve は localhost からのリクエストにのみ応答します。(中略)他のローカル デバイスからテストする場合は、次のように –host フラグを使用します。

1
2
> $ firebase serve --host 0.0.0.0  // accepts requests to any host
>

まとめ

firebase を Docker 環境でローカル実行するときは、host オプションを使いましょう。