一、旧服务器数据备份
1、可以把(.env)及(docker-compose.yaml)备份一下,防止意外情况
2、可以使用tar.exe命令打包(dify\docker\volumes)文件夹,数据重要
3、dify运行状态保存api\db\weaviate这三个包数据
powershell命令:
docker run --rm --volumes-from docker-api-1 -v ${PWD}:/backup busybox tar cvf /backup/docker-api.tar app/api/storage
docker run --rm --volumes-from docker-weaviate-1 -v ${PWD}:/backup busybox tar cvf /backup/docker-weaviate-data.tar var/lib/weaviate
docker run --rm --volumes-from docker-db-1 -v ${PWD}:/backup busybox tar cvf /backup/docker-db-data.tar var/lib/postgresql/data
cmd中就把 ${PWD} 替换成 %cd%
在哪运行该命令默认就把压缩文件保存在哪
二、新服务器的准备工作及数据恢复
1、下载最新的dify社区版本代码
2、把三个压缩包复制到/docker路径里面
3、把 .env.example 该成 .env
4、docker目录下运行启动命令
docker compose up -d
5、启动后依次运行以下数据解压到docker镜像命令(默认用的powershell)
docker run --rm --volumes-from docker-api-1 -v ${PWD}:/backup busybox tar xvf /backup/docker-api.tar -C /
docker run --rm --volumes-from docker-weaviate-1 -v ${PWD}:/backup busybox tar xvf /backup/docker-weaviate-data.tar -C /
docker run --rm --volumes-from docker-db-1 -v ${PWD}:/backup busybox tar xvf /backup/docker-db-data.tar -C /
6、运行数据包写入命令
进入docker-api-1的镜像:
docker exec -it docker-api-1 bash
运行数据更新命令:
flask db upgrade
7、进入web登入以前的账号密码进入后台
8、卸载重新安装插件就可以重新正常使用,数据均为丢失
注意事项:
FORCE_VERIFYING_SIGNATURE=false
通过添加到.env
文件并重新启动 Dify 服务来禁用签名验证。
三、一些命令介绍
1、删除所有镜像
docker rmi $(docker images -q)
2、查看当前镜像
docker images
3、镜像打包命令
# 多镜像打包(示例版本号以实际为准)
docker save -o dify_all.tar langgenius/dify-web:1.3.1 langgenius/dify-api:1.3.1 langgenius/dify-plugin-daemon:0.0.9-local langgenius/dify-sandbox:0.2.11 postgres:15-alpine redis:6-alpine mysql:8.0.39 nginx:latest ubuntu/squid:latest semitechnologies/weaviate:1.19.0
docker rmi langgenius/dify-web:1.3.1 langgenius/dify-api:1.3.1 langgenius/dify-plugin-daemon:0.0.9-local langgenius/dify-sandbox:0.2.11 postgres:16-alpine redis:6-alpine mysql:8.0.39 nginx:latest ubuntu/squid:latest semitechnologies/weaviate:1.19.0
docker rmi langgenius/dify-web:1.4.0 langgenius/dify-api:1.4.0 langgenius/dify-plugin-daemon:0.0.10-local langgenius/dify-sandbox:0.2.12 postgres:15-alpine redis:<none> nginx:<none> ubuntu/squid:<none>
docker rmi redis:none nginx:none ubuntu/squid:none
4、账号找回命令
flask reset-password
5、直接连接postgres
docker exec -it docker-db-1 psql -U postgres -d dify
查询所有表
/dt