# Dify 完整部署方案 - 网络优化版

**日期**: 2025-10-10  
**状态**: 正在部署

---

## 🎯 当前情况

✅ **好消息**: 
- Dify代码已完整下载
- Docker镜像**已开始下载**
- 部分镜像层已成功下载（如：54e822d8ee0c Already exists）

❌ **问题**: 
- 网络不稳定，出现EOF错误
- 需要优化网络配置

---

## 🚀 推荐方案：配置镜像加速 + 持续重试

### 第一步：立即配置Docker镜像加速器 ⚡

**这是关键步骤，可以大幅提升成功率！**

#### 操作步骤：

1. **右键点击**系统托盘的Docker Desktop图标（🐋）
2. 选择 **Settings** （设置）
3. 左侧菜单选择 **Docker Engine**
4. 在JSON配置编辑器中，找到现有配置
5. 添加或修改 `registry-mirrors` 配置：

```json
{
  "builder": {
    "gc": {
      "defaultKeepStorage": "20GB",
      "enabled": true
    }
  },
  "experimental": false,
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://registry.docker-cn.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com"
  ]
}
```

6. 点击 **Apply & restart** （应用并重启）
7. 等待Docker重启完成（约30秒）

---

### 第二步：重新拉取镜像

Docker重启后，打开PowerShell并运行：

```powershell
# 进入Dify目录
cd D:\MyCursor\dify\docker

# 重新拉取镜像（这次应该会快很多）
docker compose pull
```

**预计时间**: 10-20分钟（取决于网络速度）

---

### 第三步：启动Dify服务

镜像拉取完成后：

```powershell
# 启动所有服务
docker compose up -d

# 等待服务启动（约2-3分钟）
Start-Sleep -Seconds 120

# 查看服务状态
docker compose ps
```

---

### 第四步：验证部署

1. **检查容器状态**：
```powershell
docker ps | findstr dify
```

应该看到以下容器运行中：
- docker-api-1
- docker-worker-1
- docker-web-1
- docker-nginx-1
- docker-weaviate-1
- docker-redis-1
- docker-db-1

2. **访问Dify界面**：
- 打开浏览器
- 访问：http://localhost
- 应该看到Dify欢迎页面

3. **完成初始化**：
- 创建管理员账号
- 设置管理员密码
- 获取API Key

---

## 🔄 备选方案：如果镜像加速器仍然失败

### 方案1：逐个拉取镜像

```powershell
cd D:\MyCursor\dify\docker

# 一次拉取一个服务的镜像
docker compose pull redis
docker compose pull db
docker compose pull nginx
docker compose pull weaviate
docker compose pull api
docker compose pull worker
docker compose pull web
docker compose pull sandbox

# 全部拉取完成后启动
docker compose up -d
```

### 方案2：使用国内Dify镜像（如果有）

检查Dify是否提供国内镜像源。

### 方案3：暂时跳过Dify部署

**如果网络问题持续无法解决**，可以：
1. 先继续Day 6的前端开发
2. 使用大模型API直接实现对话功能
3. 等网络稳定或有VPN时再部署Dify
4. 或者考虑使用其他RAG方案

---

## 📊 Dify完整架构说明

当Dify成功部署后，它包含以下组件：

| 服务 | 端口 | 说明 |
|------|------|------|
| nginx | 80 | 反向代理，统一入口 |
| api | 5001 | Dify API服务 |
| web | 3000 | Dify前端界面 |
| worker | - | 后台任务处理 |
| worker_beat | - | 定时任务调度 |
| db (PostgreSQL) | 5432 | Dify数据库 |
| redis | 6379 | 缓存服务 |
| weaviate | 8080 | 向量数据库（RAG核心） |
| sandbox | 8194 | 代码执行沙箱 |

---

## 🎯 快速命令参考

### 查看部署进度
```powershell
cd D:\MyCursor\dify\docker
docker compose ps
```

### 查看容器日志
```powershell
# 查看所有日志
docker compose logs

# 查看特定服务日志
docker compose logs api
docker compose logs web
```

### 重启服务
```powershell
docker compose restart
```

### 停止服务
```powershell
docker compose down
```

### 完全清理并重新部署
```powershell
docker compose down -v  # -v 会删除数据卷
docker compose pull
docker compose up -d
```

---

## ✅ 部署成功检查清单

- [ ] Docker镜像加速器已配置
- [ ] 所有镜像拉取完成（无报错）
- [ ] `docker compose ps` 显示所有容器 "Up"
- [ ] 访问 http://localhost 可以打开Dify界面
- [ ] 完成初始化，创建管理员账号
- [ ] 获取Dify API Key
- [ ] 测试创建知识库功能

---

## 🔧 常见问题排查

### 问题1：端口冲突

**症状**：提示端口80或5432已被占用

**解决**：
```powershell
# 查看端口占用
netstat -ano | findstr :80
netstat -ano | findstr :5432

# 停止AI Clinical的PostgreSQL（如果冲突）
cd D:\MyCursor\AIclinicalresearch
docker-compose down
```

### 问题2：内存不足

**症状**：容器启动失败，提示OOM

**解决**：
- Docker Desktop → Settings → Resources
- 增加Memory限制到至少8GB

### 问题3：磁盘空间不足

**症状**：镜像拉取失败，提示no space left

**解决**：
```powershell
# 清理未使用的镜像
docker system prune -a

# 查看磁盘使用
docker system df
```

---

## 🎉 部署成功后的下一步

1. **获取API Key**
   - 登录Dify控制台
   - 进入设置 → API Keys
   - 创建新的API Key
   - 复制并保存到 `backend/.env` 的 `DIFY_API_KEY`

2. **创建测试知识库**
   - 创建一个知识库
   - 上传1-2个测试PDF文件
   - 记录知识库ID

3. **更新开发里程碑**
   - 标记Day 4的Dify部署任务为完成
   - 更新文档

4. **继续Day 6开发**
   - 开始前端基础架构搭建
   - 集成Dify API

---

## 📞 需要帮助？

如果部署过程中遇到问题：

1. 查看本文档的"常见问题排查"部分
2. 查看容器日志：`docker compose logs`
3. 查看Dify官方文档：https://docs.dify.ai
4. 告诉我具体的错误信息

---

**💪 加油！配置镜像加速器后成功率会大大提升！**




