首先确保拥有管理员权限!

一、部署docker

首先停止运行中的容器,docker服务,避免清理的时候出现文件占用错误

# 1. 停止所有运行的Docker容器
docker stop $(docker ps -aq)

# 2. 删除所有Docker容器(包括已停止的)
docker rm $(docker ps -aq)

# 3. 停止Docker服务
sudo systemctl stop docker
sudo systemctl stop docker.socket
sudo systemctl stop containerd

彻底卸载所有官方、第三方包(engine、compose、containerd)

# 1. 卸载Docker核心包(覆盖不同安装方式的残留)
sudo apt purge -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras

# 2. 卸载可能的第三方Docker包(如docker.io,Ubuntu自带的旧版本)
sudo apt purge -y docker.io docker-compose

# 3. 自动清理卸载后的依赖残留
sudo apt autoremove -y

删除残留文件

# 1. 删除Docker主目录(包含镜像、容器、卷、配置)
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

# 2. 删除Docker配置文件
sudo rm -rf /etc/docker
sudo rm -rf /etc/default/docker

# 3. 删除NVIDIA Container Toolkit残留(若之前装过,避免GPU适配冲突)
sudo rm -rf /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo rm -rf /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

# 4. 删除用户级Docker配置(可选,若当前用户有本地Docker配置)
rm -rf ~/.docker

验证是否删除干净

# 1. 检查Docker二进制文件是否残留
which docker
which docker-compose

# 2. 检查Docker服务是否残留
sudo systemctl status docker

# 3. 检查Docker相关包是否残留
dpkg -l | grep docker

预期结果:which docker无输出;systemctl status docker提示 “Unit docker.service could not be found”;dpkg -l | grep docker无结果。

如果你之前安装过docker,那么这里可能会报错

这是之前安装的gpg残留文件。

首先种植当前操作

# 更新源并安装Docker
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 验证安装(成功会显示版本号)
docker --version
docker compose version

处理已经存在的密钥文件

# 备份旧密钥(如果需要)或直接删除
sudo mv /usr/share/keyrings/docker-archive-keyring.gpg /usr/share/keyrings/docker-archive-keyring.gpg.bak

导入缺失的密钥文件

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8

公钥导入成功

切换到国内镜像源

# 1. 安装依赖(这步你已经完成了,可跳过)
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release

# 2. 添加阿里云Docker GPG密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 3. 添加阿里云Docker软件源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

删除可能存在的官方docker源

# 删除可能存在的旧Docker源文件
sudo rm -f /etc/apt/sources.list.d/docker.list
# 重新添加阿里云Docker源(确保只有国内源)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

重新安装docker和compose

# 更新源并安装Docker
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 验证安装(成功会显示版本号)
docker --version
docker compose version

docker、compose安装成功

安装nvidia驱动,让docker可以绑定gpu,完成dify使用gpu的需求

安装toolkit,让docker可以使用gpu,完成后续的dify在gpu上训练使用模型

# 1. 添加NVIDIA官方GPG密钥
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg

# 2. 添加NVIDIA软件源
curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list

# 3. 更新源并安装工具包
sudo apt update && sudo apt install -y nvidia-container-toolkit

# 4. 重启Docker使GPU配置生效
sudo systemctl restart docker

二、部署dify

我此处采用的是本地部署好的docker,dify

现在本地确保所有镜像

在本地powershell执行

导出完整镜像

# 完整导出命令(直接复制到PowerShell执行,替换路径为你本地实际路径)
docker save -o "C:\Users\你的用户名\ai-rag-all-images.tar" `
  busybox:latest `
  langgenius/dify-api:1.13.0 `
  langgenius/dify-plugin-daemon:0.5.3-local `
  langgenius/dify-sandbox:0.2.12 `
  langgenius/dify-web:1.13.0 `
  nginx:latest `
  postgres:15-alpine `
  quay.io/minio/minio:RELEASE.2023-12-20T01-00-02Z `
  redis:6-alpine `
  semitechnologies/weaviate:1.27.0

在本地下载路径下找到压缩好的包以后,拖拉拽到服务器home/ubuntu目录下就可以了

导入dify镜像

# 进入目录
cd /home/ubuntu/
# 导入所有Dify镜像
docker load -i ai-rag-all-images.tar
# 验证镜像(出现langgenius开头的镜像即成功)
docker images | grep dify

镜像导入完成

克隆对应版本的dify代码

# 克隆1.13.0分支代码,避免主分支版本不一致
git clone https://github.com/langgenius/dify.git --branch 1.13.0
cd dify

代码克隆成功

向.env里面追加核心配置

echo "STORAGE_TYPE=opendal" >> .env
echo "OPENDAL_SCHEME=fs" >> .env
echo "OPENDAL_FS_ROOT=/app/storage" >> .env
echo "COMPOSE_PULL=0" >> .env  # 禁用镜像拉取,用本地导入的
echo "MODEL_WORKER_USE_GPU=true" >> .env  # 启用双 RTX 4090 加速

启动dify服务

# 只启动 Dify 核心服务(完全避开 ssrf_proxy/squid 组件)
docker compose up -d db_postgres redis api sandbox web worker worker_beat nginx

验证服务状态

docker compose ps

此处可能会连接不上

先启动 plugin_daemon 组件

# 启动 plugin_daemon 服务,补全 nginx 需要的上游
docker compose up -d plugin_daemon

强制重建 nginx 容器

# 重建 nginx 容器,解决 "host not found" 错误
docker compose up -d --force-recreate nginx

验证 nginx 日志(确认报错消失)

docker compose logs -f nginx

nginx 已经成功运行

dify部署成功

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐