如何将本地运行的Appwrite镜像及所有项目迁移至其他计算机?
迁移本地带数据的Appwrite实例到生产服务器/其他机器
核心原理
Appwrite的所有持久化数据(项目、数据库文档、函数代码、存储文件等)都存储在Docker卷中,迁移的核心就是备份本地卷数据 + 在目标服务器恢复数据,同时同步配置文件。
步骤1:本地备份数据与配置
- 停止本地Appwrite容器,避免备份时数据不一致:
docker-compose down - 查看Appwrite使用的Docker卷:
你会看到类似docker volume lsappwrite_db(数据库数据)、appwrite_storage(存储文件)、appwrite_functions(函数代码)等卷。 - 备份每个卷的数据到本地目录:
以备份appwrite_db为例,用临时容器打包卷内容:
重复该命令,把所有Appwrite相关的卷都打包成对应的docker run --rm -v appwrite_db:/data -v $(pwd):/backup busybox tar czf /backup/appwrite_db.tar.gz -C /data .tar.gz文件。 - 备份关键配置文件:
复制本地的docker-compose.yml和.env文件到备份目录,这两个文件包含了Appwrite的核心配置(密钥、端口、服务参数等),必须同步到目标服务器。
步骤2:目标服务器环境准备
- 安装Docker和Docker Compose:
以Ubuntu为例:sudo apt update && sudo apt install docker.io docker-compose -y sudo systemctl start docker && sudo systemctl enable docker - 在目标服务器创建一个Appwrite目录,用于存放配置和备份文件。
步骤3:恢复数据到目标服务器
- 将本地备份的所有
tar.gz文件、docker-compose.yml和.env上传到目标服务器的Appwrite目录(可使用scp或其他文件传输工具)。 - 先启动一次Appwrite再停止,让Docker自动创建所需的空卷:
docker-compose up -d && docker-compose down - 恢复每个卷的数据:
以恢复appwrite_db为例:
重复该命令恢复所有卷的数据。docker run --rm -v appwrite_db:/data -v $(pwd):/backup busybox tar xzf /backup/appwrite_db.tar.gz -C /data .
步骤4:启动并验证
- 启动目标服务器的Appwrite容器:
docker-compose up -d - 访问目标服务器的Appwrite控制台(
http://your-server-ip:80,端口根据你的.env配置调整),检查以下内容:- 已创建的项目是否存在
- 数据库文档、集合是否完整
- 函数代码是否能正常执行
- 存储的文件是否可访问
关键注意事项
- 配置一致性:目标服务器的
.env文件必须和本地完全一致,特别是_APP_KEY、_APP_API_KEYS、_APP_DOMAIN这些核心参数,否则会导致认证失败或访问异常。 - 域名/IP更新:如果目标服务器的公网IP或域名和本地不同,需要在Appwrite控制台的「平台设置」中更新对应平台的域名/IP,解决CORS跨域问题。
- 函数依赖:如果你的Appwrite函数使用了自定义镜像,需要确保目标服务器能拉取到该镜像(如果是私有镜像,要配置Docker镜像拉取权限)。
内容的提问来源于stack exchange,提问作者samman adhikari
相关产品推荐
相关产品推荐

