使用 Docker Compose 部署 Dify
部署前准备
确保机器满足以下最低系统要求。
硬件
- CPU >= 2 Core
- RAM >= 4 GiB
软件
| 操作系统 | 所需软件 | 说明 |
|---|---|---|
| macOS 10.14 或更高版本 | Docker Desktop(含 Docker Compose 2.24.0+) | Docker 虚拟机至少配置 2 个虚拟 CPU 和 8 GiB 内存。 安装说明详见 Mac 版 Docker Desktop 安装指南。 |
| Linux 发行版 | Docker 19.03+ Docker Compose 2.24.0+ | 安装说明详见 Docker 引擎安装指南 和 Docker Compose 安装指南。 |
| Windows(启用 WSL 2) | Docker Desktop(含 Docker Compose 2.24.0+) | 源代码和绑定到 Linux 容器的数据建议存储在 Linux 文件系统中,而非 Windows。 安装说明详见 Windows 版 Docker Desktop 安装指南。 |
部署并启动
1、克隆 Dify
git克隆 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用git bash的话可以用下面这个指令
git clone --branch 1.11.4 https://github.com/langgenius/dify.git /e/dify2、启动 Dify
- 进入 Dify 源代码中的
docker目录:cd dify/docker - 复制必要的环境配置文件:
如需自定义部署,参见 自定义。cp .env.example .env - 启动容器:
Dify 需要 Docker Compose 2.24.0 或更高版本。运行
docker compose version确认版本。
启动以下容器:docker compose up -d- 5 个核心服务:
api、worker、worker_beat、web、plugin_daemon - 6 个依赖组件:
weaviate、db_postgres、redis、nginx、ssrf_proxy、sandbox
[+] Running 13/13 ✔ Network docker_ssrf_proxy_network Created 10.0s ✔ Network docker_default Created 0.1s ✔ Container docker-sandbox-1 Started 0.3s ✔ Container docker-db_postgres-1 Healthy 2.8s ✔ Container docker-web-1 Started 0.3s ✔ Container docker-redis-1 Started 0.3s ✔ Container docker-ssrf_proxy-1 Started 0.4s ✔ Container docker-weaviate-1 Started 0.3s ✔ Container docker-worker_beat-1 Started 3.2s ✔ Container docker-api-1 Started 3.2s ✔ Container docker-worker-1 Started 3.2s ✔ Container docker-plugin_daemon-1 Started 3.2s ✔ Container docker-nginx-1 Started 3.4s - 5 个核心服务:
- 验证所有容器是否成功运行:
应看到类似以下的输出,每个容器的状态应为docker compose psUp或healthy:NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS docker-api-1 langgenius/dify-api:1.10.1 "/bin/bash /entrypoi…" api 26 seconds ago Up 22 seconds 5001/tcp docker-db_postgres-1 postgres:15-alpine "docker-entrypoint.s…" db_postgres 26 seconds ago Up 25 seconds (healthy) 5432/tcp docker-nginx-1 nginx:latest "sh -c 'cp /docker-e…" nginx 26 seconds ago Up 22 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp docker-plugin_daemon-1 langgenius/dify-plugin-daemon:0.4.1-local "/bin/bash -c /app/e…" plugin_daemon 26 seconds ago Up 22 seconds 0.0.0.0:5003->5003/tcp, :::5003->5003/tcp docker-redis-1 redis:6-alpine "docker-entrypoint.s…" redis 26 seconds ago Up 25 seconds (health: starting) 6379/tcp docker-sandbox-1 langgenius/dify-sandbox:0.2.12 "/main" sandbox 26 seconds ago Up 25 seconds (health: starting) docker-ssrf_proxy-1 ubuntu/squid:latest "sh -c 'cp /docker-e…" ssrf_proxy 26 seconds ago Up 25 seconds 3128/tcp docker-weaviate-1 semitechnologies/weaviate:1.27.0 "/bin/weaviate --hos…" weaviate 26 seconds ago Up 25 seconds docker-web-1 langgenius/dify-web:1.10.1 "/bin/sh ./entrypoin…" web 26 seconds ago Up 25 seconds 3000/tcp docker-worker-1 langgenius/dify-api:1.10.1 "/bin/bash /entrypoi…" worker 26 seconds ago Up 22 seconds 5001/tcp docker-worker_beat-1 langgenius/dify-api:1.10.1 "/bin/bash /entrypoi…" worker_beat 26 seconds ago Up 22 seconds 5001/tcp
3、访问
- 打开管理员初始化页面,设置管理员账户:
# 本地环境 http://localhost/install # 服务器环境 http://your_server_ip/install - 完成管理员账户设置后,在以下地址登录 Dify:
# 本地环境 http://localhost # 服务器环境 http://your_server_ip
自定义如需自定义部署,编辑相关文件中的环境变量,然后重启 Dify。
1、编辑环境变量
- 必要的启动值位于
docker/.env文件中(部署时从docker/.env.example复制创建)。直接编辑即可。 - 可选或特定提供商的设置在
docker/envs/下有对应模板。要覆盖默认值,复制相应模板(去掉.example后缀),然后编辑副本。例如:cd dify/docker cp envs/vectorstores/milvus.env.example envs/vectorstores/milvus.env
docker/.env中的值优先于任何docker/envs/*.env文件中的值。
所有变量的说明,详见 环境变量。
2、重启 Dify
docker compose down docker compose up -d升级不同版本的升级步骤可能有所不同。详见 Releases 页面中提供的目标版本升级指南。
升级后,对照各.env.example文件检查对应的.env,确认是否有新增或变更的变量
