2026 最新:Dify 本地 Docker 部署完整教程(Windows + Git Bash)

> 适用版本:Dify 1.16.x(本文以 langgenius/dify-web:1.16.0-rc1 为参考)

> 环境:Windows 10/11 + Docker Desktop + Git Bash

> 最终访问地址示例:http://localhost:8080

本文以「能跑通」为目标,走官方 Docker Compose 路线,不额外加 /dify 子路径,不另起自定义反向代理。后面若要改端口或对外访问,见同系列第二篇。


一、你最终会得到什么

启动成功后,浏览器访问:

text 复制代码
http://localhost:8080

首次访问通常会 跳转到**/install**,进入初始化管理员账号页面。这是正常现象,不是报错。

一套最小可用栈一般包括:

组件 作用
web 前端(Next.js)
api / worker 后端与异步任务
nginx 统一入口(默认映射到宿主机 8085)
db_postgres PostgreSQL 业务库
weaviate 向量库(知识库检索)
redis 缓存 / 队列

二、前置条件

  1. 已安装并启动 Docker Desktop
  2. 建议可用内存 ≥ 8GB(知识库 + 向量库会吃内存)
  3. 已安装 Git(用 Git Bash 操作更方便)
  4. 端口 8080、443、5003 未被占用

检查 Docker:

bash 复制代码
docker version
docker compose version

三、获取代码并进入正确目录

bash 复制代码
cd /d/Dify  # 按你实际磁盘路径调整
# 若还没有源码:
# git clone https://github.com/langgenius/dify.git
cd /d/Dify/dify/docker

关键坑:

docker compose 必须在包含 docker-compose.yaml 的目录执行。

在 /d/Dify 根目录执行会报:

text 复制代码
no configuration file provided: not found

正确目录是:

text 复制代码
.../dify/docker

四、配置 .env

首次部署复制示例配置:

bash 复制代码
cp .env.example .env
# Windows 也可用:
# cp .env.example .env

用编辑器打开 .env,确认下面几项(本地访问够用):

env 复制代码
CONSOLE_API_URL=http://localhost:8080
CONSOLE_WEB_URL=http://localhost:8080
APP_API_URL=http://localhost:8080
APP_WEB_URL=http://localhost:8080
SERVER_CONSOLE_API_URL=http://api:5001
EXPOSE_NGINX_PORT=8080
EXPOSE_NGINX_SSL_PORT=443
DB_TYPE=postgresql
VECTOR_STORE=weaviate

说明:

  • CONSOLE_* / APP_* 给浏览器用,必须是你本机能打开的地址
  • SERVER_CONSOLE_API_URL 给容器内 SSR 用,应走 Docker 服务名 api:5001
  • 不要手动设置 NEXT_PUBLIC_BASE_PATH=/dify(本地直连根路径不需要)

数据库账号密码默认一般是:

env 复制代码
DB_USERNAME=postgres
DB_PASSWORD=difyai123456
DB_HOST=db_postgres
DB_PORT=5432
DB_DATABASE=dify

生产环境务必改强密码。


五、启动服务(最容易踩坑的一步)

正确启动方式

bash 复制代码
cd /d/Dify/dify/docker
推荐:显式打开数据库、向量库、协作相关 profile
docker compose --profile postgresql --profile weaviate --profile collaboration up -d

若 .env 中已配置:

env 复制代码
COMPOSE_PROFILES=weaviate,postgresql,collaboration

也可简化为:

bash 复制代码
docker compose up -d

错误示范:--profile core

很多旧教程写:

bash 复制代码
docker compose --profile core up -d

在新版 compose 里,不一定存在名为 core 的 profile。

结果是:web/api/nginx 起来了,但 PostgreSQL、Weaviate 没启动。

表现:

  • 访问 http://localhost:8080 → 500 / 502
  • API 日志出现:could not translate host name "db_postgres"
  • web 日志:ECONNREFUSED ...:5001 或 Internal Server Error

这不是「再改 Nginx 就能修好」的问题,而是缺数据库。


六、确认容器状态

bash 复制代码
cd /d/Dify/dify/docker
docker compose ps

重点看:

  • docker-api-1:healthy
  • docker-db_postgres-1:healthy
  • docker-web-1、docker-nginx-1:Up
  • docker-weaviate-1:Up

再测入口:

bash 复制代码
curl -I http://localhost:8085/

期望类似:

text 复制代码
HTTP/1.1 307 Temporary Redirect
location: /install

或直接 200。出现 502 Bad Gateway 时,多半是 nginx 已启动但 web/api 还没就绪,等 10~30 秒再试;若持续 502,执行:

bash 复制代码
docker compose up -d --force-recreate nginx web api

七、浏览器访问与初始化

  1. 打开 无痕窗口(避免旧重定向缓存)
  2. 访问:http://localhost:8080
  3. 在 /install 创建管理员账号
  4. 登录后进入工作室,即可创建应用、配置知识库

八、常用运维命令

查看日志:

bash 复制代码
docker compose logs web --tail 50
docker compose logs api --tail 50
docker compose logs nginx --tail 50

重启:

bash 复制代码
docker compose restart

停止(保留数据卷):

bash 复制代码
docker compose down

更新镜像后重建:

bash 复制代码
docker compose pull
docker compose up -d

九、Windows / Git Bash 特别注意

1. 进容器请用 winpty + 双斜杠

bash 复制代码
# 容易失败
docker exec -it docker-web-1 /bin/sh
推荐
winpty docker exec -it docker-web-1 //bin/sh

原因:Git Bash 会把 /bin/sh 映射成 Windows 路径。

2. 不要用 docker run 顶掉 compose 的 docker-web-1

例如:

bash 复制代码
docker run -d --name docker-web-1 ... langgenius/dify-web:...

这会:

  • 丢掉 compose 注入的整套环境变量
  • 后续 docker compose up 报 容器名 Conflict
  • Nginx 仍缓存旧 upstream IP,出现假 502

正确做法永远是:

bash 复制代码
docker compose up -d --force-recreate web

3. 慎用 /dify 子路径

本地知识库场景直接用根路径 http://localhost:8080 即可。

强行 NEXT_PUBLIC_BASE_PATH=/dify + Nginx 补斜杠,很容易出现重定向循环(另文详解)。


十、验收清单

  • 目录在 dify/docker
  • .env 中浏览器 URL 为 http://localhost:8080
  • 已启用 postgresql + weaviate profile
  • docker compose ps 能看到 postgres / weaviate
  • curl -I http://localhost:8085/ 不是 404 No Found/循环重定向
  • 无痕模式能打开安装或登录页

小结

2026 年在 Windows 上本地部署 Dify,核心就三句:

  1. 进对目录 :dify/docker
  2. 开对 profile :至少 postgresql + weaviate
  3. 走官方 nginx 入口 :http://localhost:8080,先别折腾自定义 /dify 代理
相关推荐
AscendKing7 小时前
Docker Compose 一键部署 SkyWalking 10.2.0 + Elasticsearch8.11,分布式链路追踪完整实战
elasticsearch·docker·skywalking·链路追踪·微服务监控
金融小师妹7 小时前
多因子时间序列分析:美元与美债收益率变化对黄金价格+1.6%的影响
c语言·人工智能·git·决策树·pyqt
北风toto7 小时前
Windows 下用 OpenSSL 生成 SSL 密钥并配置 Nginx 教程
windows·nginx·ssl
励志师code8 小时前
Kubernetes 集群节点生命周期管理实战:从扩容、调度管控到证书续期
运维·docker·容器·kubernetes·gpu算力·kubelet
2601_962364978 小时前
升级电脑人脸登录,选购 Windows Hello 模组常见误区
windows·安全·电脑
小陈不好吃8 小时前
Java 泛型与类型擦除:从 PECS 原则到 TypeToken 绕过
java·开发语言·windows·pecs 原则·typetoken绕过
AOI小白新手上路8 小时前
autodl无卡模式下载NTURain 训练集实录:基于 Git 部分克隆与稀疏检出的数据拉取
大数据·git·elasticsearch
木雷坞8 小时前
Docker Compose部署Metabase:应用库隔离与日期筛选看板
运维·docker·容器
天府云创8 小时前
Anthropic重做Git:Scion——Agent时代的版本管理系统
git·svn·版本控制·软件设计·迭代升级·scion
怒放的生命19919 小时前
前端项目 Docker 打包实操指南
前端·docker·容器