Skip to main content

run

Dify 有三种常见运行方式,取决于你是「只想用起来」还是「要改代码开发」。


方式对比

方式适合场景访问地址需要改代码
1. Docker Compose 全量部署体验 / 自托管,不改源码http://localhost/install
2. 本机源码开发日常开发、调试http://localhost:3000
3. Dev Container统一环境、Codespaces、少配本机同方式 2

方式 1:Docker Compose(最快跑起来)

前提:Docker + Docker Compose,建议 CPU ≥ 2 核、内存 ≥ 4GB

cd docker
cp .env.example .env # 首次需要
docker compose up -d

浏览器打开:**http://localhost/install**,按向导完成初始化。

  • 一次拉起 API、Web、数据库、Redis、向量库等
  • 配置在 docker/.env(可从 docker/envs/ 按需复制高级配置)
  • 改配置后:docker compose up -d 重新应用

方式 2:本机源码开发(官方推荐)

前提uvpnpm、Docker(只跑中间件)。

一次性准备

./dev/setup

会复制环境文件并安装依赖:

  • api/.envapi/.env.example
  • web/.env.localweb/.env.example
  • docker/middleware.envdocker/envs/middleware.env.example
  • uv sync(API)、pnpm install(根 workspace)

建议在 api/.env 里设置 SECRET_KEY(见 api/README.md)。

按顺序启动(多个终端)

步骤命令作用
1./dev/start-docker-composePostgreSQL、Redis、Weaviate 等中间件
2./dev/start-apiAPI(5001),会先跑数据库迁移
3./dev/start-web前端(默认 3000
4./dev/start-workerCelery 异步任务(RAG、工作流等需要)
5(可选)./dev/start-beat定时任务

访问:http://localhost:3000

默认 API 地址在 web/.env.local 里,例如 NEXT_PUBLIC_API_PREFIX=http://localhost:5001/console/api

仅启动中间件(不用 ./dev 脚本时)

cd docker
cp envs/middleware.env.example middleware.env
docker compose --env-file middleware.env -f docker-compose.middleware.yaml -p dify up -d

方式 3:Dev Container(你看到的 .devcontainer

仓库在 .devcontainer/ 里配置了 Python 3.12 + Node LTS + Docker-in-Docker,用于 VS Code / Cursor 「在容器中重新打开」GitHub Codespaces

如何进入

  • VS Code / Cursor:命令面板 → Dev Containers: Reopen in Container
  • Codespaces:打开 .devcontainer/README.md 里的 Codespaces 链接
  • 也可点 README 里的 “Open in Dev Containers” 徽章

容器里会自动做什么

时机脚本内容
创建后post_create_command.shwebpnpm install、安装 uv、写入 shell 别名
每次启动post_start_command.shcd api && uv sync

容器内常用别名(创建容器后可用)

别名等价操作
start-containers启动 docker-compose.middleware.yaml 中间件
start-apiFlask API :5001
start-webpnpm dev:inspect(前端)
start-workerCelery worker
stop-containers停止中间件

典型流程(在 devcontainer 终端里,开多个 tab):

start-containers # 1. 中间件(依赖宿主机 Docker / DinD)
start-api # 2. API
start-web # 3. 前端
start-worker # 4. Worker

访问同样是 http://localhost:3000(端口会由 IDE 转发到本机)。

Dev Container 注意点

  • docker-in-docker,中间件要在容器里能访问 Docker;本机需已装 Docker Desktop 等。
  • Codespaces 若登录 /signin 异常,见 .devcontainer/README.md 的 workaround。
  • Devcontainer 的 post_create 不会./dev/setup,不会自动复制 api/.env;首次开发建议在本机或容器里手动执行一次 ./dev/setup,或自己 cp 上述 env 文件。

架构示意(源码开发)


本机可能遇到的冲突

你机器上已有 5432 / 6379 上的 Postgres、Redis(例如 offer-ai-* 容器)。再启 Dify 中间件或全量 Compose 时可能 端口冲突。处理方式:

  • 停掉占用端口的其他容器,或
  • docker/middleware.env / docker/.env 里改掉 DB_PORTREDIS_PORT 等映射。

怎么选

  • 只想用 Dify、不改代码 → 方式 1(docker compose up -d
  • 在本机改 API / Web → 方式 2(./dev/setup + 各 start-*
  • 环境难配、团队要一致、或用 Codespaces → 方式 3(Dev Container)+ 仍要 start-containers / start-api / start-web / start-worker

如果你说一下更倾向哪种(全量 Docker / 本机开发 / Dev Container),我可以按那条路径一步步帮你执行并排查端口、env 等问题。