Dockerで起動したFirebase emulatorのexportがうまくいかない場合
firebase-tools: v13.4.1
Docker: 20.10.12 (Docker for Mac)
発生条件
export先のパスにvolumeを直接指定したとき
code:yaml
version: '3'
services:
firebase_emulator:
build: . # ここは適宜
volumes:
- /firebase-export
# export先は--importの引数と同じ
command: "emulators:start", "--import", "/firebase-export", "--export-on-exit", "--debug"
原因
emulatorの実行中にデータを書き出しているtemp directoryの内容を終了時に全て書き出すときの処理(ソースコード)
export先をrimrafでディレクトリごと削除
削除できないvolumeなのにrimrafはfailしない
rimraf最新版なら例外を吐くが、使われているのがv3
そのあと、temp dirをexport先にmove
volumeは消えていないのでdest already existsで異常終了
対処法
--import /firebase-export/dataのように内部のパスを指定する