要在 Docker 中运行 Firestore 模拟器并保存数据,你可以按照以下步骤进行操作:
创建一个名为 Dockerfile
的文件,并添加以下内容:
FROM openjdk:8-jdk-alpine
# 设置工作目录
WORKDIR /usr/src/app
# 下载 Firestore 模拟器
RUN apk add --no-cache curl && \
curl -o firestore-emulator-v1.13.1.jar https://storage.googleapis.com/firebase-preview-drop/emulator/cloud-firestore-emulator-v1.13.1.jar
# 暴露 Firestore 模拟器的默认端口
EXPOSE 8080
# 启动 Firestore 模拟器
CMD ["java", "-jar", "firestore-emulator-v1.13.1.jar", "--host=0.0.0.0", "--port=8080"]
在包含 Dockerfile 的目录中运行以下命令来构建 Docker 镜像:
docker build -t firestore-emulator .
运行以下命令来启动 Firestore 模拟器容器,并将数据目录挂载到主机文件系统,以便在容器重启后数据仍然存在:
docker run -d --name firestore-emulator -p 8080:8080 -v $(pwd)/firestore-data:/usr/src/app/data firestore-emulator
在这个命令中:
-d
:以分离模式运行容器。--name firestore-emulator
:为容器指定名称。-p 8080:8080
:将主机的 8080 端口映射到容器的 8080 端口。-v $(pwd)/firestore-data:/usr/src/app/data
:将主机的 firestore-data
目录挂载到容器的 /usr/src/app/data
目录。在你的应用程序中,配置 Firestore 客户端以连接到模拟器。例如,在 Node.js 中:
const admin = require('firebase-admin');
const { Firestore } = require('@google-cloud/firestore');
// 初始化 Firebase Admin SDK
admin.initializeApp({
projectId: 'your-project-id',
});
// 获取 Firestore 实例
const firestore = new Firestore();
// 配置 Firestore 客户端以连接到模拟器
firestore.settings({
host: 'localhost:8080',
ssl: false,
});
// 现在你可以使用 Firestore 客户端进行操作
为了确保数据在容器重启后仍然存在,你需要将数据目录挂载到主机文件系统(如上所示)。这样,数据将保存在主机的 firestore-data
目录中,即使容器被删除或重启,数据也不会丢失。
你可以使用 Firestore 模拟器的导出和导入功能来备份和恢复数据。
在容器中运行以下命令来导出数据:
docker exec firestore-emulator java -jar firestore-emulator-v1.13.1.jar export /usr/src/app/data/export
在容器中运行以下命令来导入数据:
docker exec firestore-emulator java -jar firestore-emulator-v1.13.1.jar import /usr/src/app/data/export
领取专属 10元无门槛券
手把手带您无忧上云