You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多台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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:53:32