Firestore local emulator に Docker コンテナから接続する

$ firebase setup:emulators:firestore

firebase.json

{
  "firestore": {}
  "emulators": {
    "firestore": {
      "host": "0.0.0.0",
      "port": "18080"
    }
  }
} 

"0.0.0.0"で全てのIPで待ち受けをして、リクエストのホスト名チェックも無効になる。 今回はgoogle cloud shell の中で実行する。認証なしでは外からアクセスできないから大丈夫。

Docker コンテナから Docker ホストへは設定なしでアクセス可能。ただし、コンテナから見たホストのIPアドレスが必要になる。

こんな感じでコンテナ作成時にIPアドレスを渡して置く

docker container run -e "DOCKER_HOST=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')" ...

Docker Tip #65: Get Your Docker Host's IP Address from in a Container — Nick Janetakis

$ curl "$DOCKER_HOST":8080 で "OK"が返ってきたら成功。