服务器部署docker、dify(ubuntu24.04.3、两张4090显卡(部署在0卡上))
·
首先确保拥有管理员权限!
一、部署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部署成功

更多推荐


所有评论(0)