多台Mac设备上Flutter Serverpod项目远程同步问题求助
多台Mac间Flutter Serverpod项目远程同步方案
问题本质
- Docker容器是本地运行实例,GitHub仅同步项目源码,不会同步本地容器状态、数据卷内容
- Postgres数据默认存储在本地Docker数据卷中,未纳入Git版本控制,因此新机器启动时会生成全新空数据库
一、数据库数据同步方案
1. 手动备份/导入快照
在原机器(MacBook Air M1)导出数据:
# 替换为你的Postgres容器名、数据库用户名、数据库名 docker exec serverpod-postgres pg_dump -U postgres serverpod > backup.sql
将backup.sql添加到Git(可通过.gitignore例外或Git LFS管理),同步到目标机器后导入:
# 替换为新机器的Postgres容器名、用户名、数据库名 cat backup.sql | docker exec -i serverpod-postgres psql -U postgres serverpod
2. 改用远程Postgres服务(推荐)
放弃本地Docker Postgres,使用云数据库(如Supabase、AWS RDS),修改Serverpod配置文件config/general.yaml中的数据库连接参数:
database: host: <远程数据库地址> port: 5432 name: <数据库名> user: <用户名> password: <密码>
所有机器连接同一远程数据库,数据自动同步,无需手动备份。
二、Docker容器配置同步
1. 用Docker Compose统一容器定义
确保项目根目录包含docker-compose.yml,将Serverpod、Postgres等服务配置纳入版本控制,多台机器启动时统一执行:
docker-compose up -d
避免手动创建容器,保证所有机器的容器配置完全一致。
2. 云同步数据卷(小型场景可选)
将Postgres数据卷挂载到iCloud/Dropbox同步目录,修改docker-compose.yml:
services: postgres: image: postgres:14 volumes: # 替换为你的云同步文件夹路径 - ~/Library/Mobile Documents/com~apple~CloudDocs/serverpod-db:/var/lib/postgresql/data
注意:云同步文件夹可能存在文件锁问题,仅适合开发阶段小数据量场景。
三、项目代码与依赖同步
- 确保
pubspec.yaml、Dockerfile、docker-compose.yml等配置文件已纳入Git - 目标机器克隆项目后,执行以下命令同步依赖:
flutter pub get docker-compose build
- 使用Git分支管理开发,通过
git pull/push同步代码变更
内容的提问来源于stack exchange,提问作者Husain Nahar
相关产品推荐
相关产品推荐

