Dify本地部署安装与启动

这份 dify部署教程依据官方 Docker Compose 文档准备环境、启动容器并访问 /install,Linux 需 Docker 19.03+ 和 Docker Compose 2.24.0+。

按这套 dify部署完成后,你会在本机或服务器上启动 Dify 容器,并进入 /install 完成管理员初始化。开始前需要一台满足官方最低配置的机器,以及 Docker、git、curl 和 jq;若使用 Linux,还要先核对 Docker 与 Docker Compose 版本。

准备条件

按 Dify 的 Docker Compose 部署文档,机器最低需要 CPU >= 2 Core、RAM >= 4 GiB。Linux 需要 Docker 19.03+ 和 Docker Compose 2.24.0+;macOS 应为 Docker 虚拟机配置至少 2 vCPUs 和 8 GiB 内存;Windows 需要 WSL 2,并把源码及绑定给 Linux 容器的数据放在 Linux 文件系统,而不是 Windows 文件系统。

在 Linux 上先检查 Docker Compose 版本:

docker compose version

该命令用于确认当前版本达到 Dify 要求的 2.24.0+。

操作步骤:完成 dify部署

以下克隆、环境文件和启动命令均按前述官方文档整理。

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

该命令通过 GitHub API 取得 latest release tag,并检出对应的 Dify 分支。

2. 进入 Docker 目录

cd dify/docker

该命令进入包含 Docker Compose 配置和 .env.example 的目录。

3. 创建环境配置文件

cp .env.example .env

该命令以模板文件创建部署使用的 .env。

必要启动配置位于 docker/.env,可选配置模板位于 docker/envs/;如果两个位置存在同名配置,docker/.env 的值优先。详细规则见 Dify 环境变量文档。敏感值应直接保留在本机 .env 中,不要写入命令历史;EXPOSE_NGINX_PORT 默认是宿主机映射给 Nginx HTTP 的 80 端口。

4. 启动容器

仍在 dify/docker 目录执行:

docker compose up -d

该命令在后台启动 Dify 及其所需的 Compose 服务。

怎么确认成功

先查看容器状态:

docker compose ps

按照前述文档,每个容器应显示为 Up 或 healthy,其中 init_permissions 显示 Exited 属于预期结果。

在默认端口下,浏览器打开:

http://localhost/install

该地址应进入 Dify 初始化流程并允许创建管理员账号,Dify README 对此作了说明。如果修改了 EXPOSE_NGINX_PORT,则应改用配置后映射到宿主机的端口。

常见出错点

提示 Compose 版本不满足要求

Dify 的 Docker Compose 部署要求 2.24.0+。先更新本机 Docker Compose,再重新检查版本并执行启动命令,不要绕过版本要求继续部署。

出现 Remote branch null not found

Dify 自托管 FAQ 将原因定位为 latest release API 请求失败,常见情况是未认证请求受到 GitHub 限流,此时 jq 会输出 null,Git 随后把它当作分支名。处理时先确认 API 请求能够返回 tag_name,再重新执行克隆命令,不要把 null 作为分支名使用。

init_permissions 显示 Exited

这不是启动失败。官方文档明确说明 init_permissions 完成初始化后显示 Exited 属于预期状态,无需为它单独重启容器。

修改 .env 后配置没有生效

完成配置修改后,需要按文档重启 Compose 环境:

docker compose down
docker compose up -d

这两个命令会依次停止并重新后台启动容器,使更新后的配置生效。

前后端使用不同子域时登录会话丢失

这类部署需要把 COOKIE_DOMAIN 设置为共享的顶级域名,开头的点可以省略;同时把 NEXT_PUBLIC_COOKIE_DOMAIN 设置为 1,以启用前端的跨子域 Cookie。

这些步骤依据正文链接的官方文档整理,未在本站机器上运行或测量,执行前请按当前版本核对。

资料来源