soarli

Ubuntu 部署 Dify:避开 Docker 版本与端口冲突的终极指南
本文基于官方文档整理,并结合了实战中遇到的 Docker Compose 版本过低(V1 vs V2)以及 80 ...
扫描右侧二维码阅读全文
31
2026/01

Ubuntu 部署 Dify:避开 Docker 版本与端口冲突的终极指南

本文基于官方文档整理,并结合了实战中遇到的 Docker Compose 版本过低(V1 vs V2)以及 80 端口占用问题,提供了一套能够直接落地、一次跑通的解决方案。

🛠 一、 环境准备(关键步骤)

官方要求 Docker Compose V2,但 Ubuntu 默认 apt 源里的通常是 V1(1.29.x),这会导致 unsupported option 报错。我们需要手动安装最新版。

1. 安装/更新 Docker 及清理旧版

# 1. 更新软件源
sudo apt-get update

# 2. 卸载旧版 Docker 和 Docker Compose (防止冲突)
sudo apt-get remove docker docker-engine docker.io containerd runc docker-compose

# 3. 安装 Docker 基础组件
sudo apt-get install docker.io -y

2. 手动安装 Docker Compose V2 (解决版本报错的核心)

不要用 apt install docker-compose,请直接运行以下命令下载二进制文件:

# 下载 V2.24.1 版本 (稳定推荐)
sudo curl -SL https://github.com/docker/compose/releases/download/v2.24.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 创建软链接
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 验证版本 (必须显示 v2.x.x)
docker-compose --version

📥 二、 获取代码与配置

1. 克隆 Dify 源码

直接拉取最新稳定版:

git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git

(如果没有安装 jq,可以先 sudo apt install jq,或者直接去 GitHub 看最新版本号手动替换)

2. 初始化配置

cd dify/docker
cp .env.example .env

🔌 三、 解决端口冲突(80端口避坑)

默认情况下 Dify 会占用 80 端口。如果你的服务器上有 Nginx、Apache 或宝塔面板,启动一定会报错 Address already in use

我们统一将对外端口修改为 81

方法 A:一条命令修改(推荐,适合脚本党)

直接修改 docker-compose.yaml 中的 Nginx 端口映射:

# 将 "80:80" 或 "${...}:80" 替换为 "81:80"
sed -i 's/- "${EXPOSE_NGINX_PORT:-80}:${NGINX_PORT:-80}"/- "81:80"/' docker-compose.yaml

方法 B:手动修改

编辑文件:nano docker-compose.yaml 搜索 nginx 服务,找到 ports

    nginx:
      ...
      ports:
        - "81:80"   # <--- 修改左边为 81,保留右边 80
        - "${EXPOSE_NGINX_SSL_PORT:-443}:${NGINX_SSL_PORT:-443}"

🚀 四、 启动 Dify

一切准备就绪,开始启动:

sudo docker-compose up -d

如果提示:

你需要直接为 Docker 的 systemd 服务配置代理。请按照以下步骤操作:

1. 创建 Docker 的 systemd 代理配置目录

首先,为 Docker 服务创建一个专门的配置文件夹:

sudo mkdir -p /etc/systemd/system/docker.service.d

2. 创建并写入代理配置

使用编辑器(如 nano 或 vim)创建一个名为 http-proxy.conf 的文件:

sudo nano /etc/systemd/system/docker.service.d/http-proxy.conf

将以下内容粘贴进去。为了确保内网通信正常(如容器间的本地通信),建议加上 NO_PROXY 规则:

[Service]
Environment="HTTP_PROXY=http://192.168.6.6:7890"
Environment="HTTPS_PROXY=http://192.168.6.6:7890"
Environment="NO_PROXY=localhost,127.0.0.1,::1,.local,192.168.0.0/16"

(如果你使用 nano,粘贴后按 Ctrl+O 然后回车保存,最后按 Ctrl+X 退出)

3. 重载 systemd 并重启 Docker

让系统读取刚才的新配置,并重启 Docker 服务使其生效:

sudo systemctl daemon-reload
sudo systemctl restart docker

4. 验证代理是否已注入

运行以下命令,检查输出中是否包含你刚设置的代理信息:

sudo docker info | grep Proxy

如果终端打印出了 HTTP Proxy: http://192.168.6.6:7890 等信息,说明配置成功。

5. 重新拉取并启动 Dify

现在 Docker Daemon 已经走代理了,回到你的 Dify 目录再次尝试运行:

sudo docker-compose up -d

排错建议
如果完成上述步骤后依然报错,那大概率是代理服务器(192.168.61.61)本身拒绝了虚拟机的连接,或者防火墙拦截了 63106 端口。你可以用这行命令单独测试一下代理通道通不通:

curl -I -x http://192.168.6.6:7890 https://registry-1.docker.io/v2/

检查状态

等待 1-2 分钟让数据库初始化,然后检查容器运行情况:

docker-compose ps

确保所有容器状态都为 UpHealth


🌐 五、 访问与初始化

现在,你可以通过浏览器访问安装向导了:

  • 访问地址http://你的服务器IP:81/install
  • 设置管理员:根据提示设置邮箱和密码。
  • 登录使用:设置完成后,以后直接访问 http://你的服务器IP:81 即可。

🔄 六、 常用维护命令(备忘)

  • 停止服务

    cd dify/docker
    docker-compose down
  • 重启服务

    docker-compose restart
  • 更新 Dify

    cd dify
    git pull origin main
    cd docker
    docker-compose down
    docker-compose pull
    docker-compose up -d

📝 极速部署脚本 (Cheat Sheet)

如果你下次需要在一台新机器上部署,直接复制下面这段代码运行即可(假设已安装 Docker):

# 1. 下载 Docker Compose V2
sudo curl -SL https://github.com/docker/compose/releases/download/v2.24.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose && sudo chmod +x /usr/local/bin/docker-compose && sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

# 2. 克隆代码
git clone --branch "$(curl -s https://api.github.com/repos/langgenius/dify/releases/latest | jq -r .tag_name)" https://github.com/langgenius/dify.git

# 3. 配置环境与修改端口 (改为81)
cd dify/docker
cp .env.example .env
sed -i 's/- "${EXPOSE_NGINX_PORT:-80}:${NGINX_PORT:-80}"/- "81:80"/' docker-compose.yaml

# 4. 启动
sudo docker-compose up -d

参考资料:

使用 Docker Compose 部署 Dify - Dify Docs

最后修改:2026 年 03 月 11 日 12 : 36 AM

发表评论