feat: local dev

This commit is contained in:
Frederick2313072
2025-09-20 05:30:39 +08:00
parent e93bfe3d41
commit c7064d44af
3 changed files with 256 additions and 0 deletions

1
.gitignore vendored
View File

@@ -147,6 +147,7 @@ api/.idea
api/.env
api/storage/*
api/Dockerfile.local
docker-legacy/volumes/app/storage/*
docker-legacy/volumes/db/data/*

211
docker/README-local-test.md Normal file
View File

@@ -0,0 +1,211 @@
# 本地测试环境设置指南
本文档说明如何创建和使用本地的Docker Compose测试环境该环境不会被提交到版本控制。
## 📁 文件结构
```
docker/
├── .env # 本地环境配置
├── env.local # 本地环境配置(备选方案)
├── docker-compose.override.yaml # 本地覆盖配置
├── start-local-test.sh # 启动脚本
└── README-local-test.md # 本文档
```
## 🚀 快速开始
### 1. 准备环境配置文件
**使用 `.env`**
```bash
cd docker
cp .env.example .env
```
### 2. 修改配置(可选)
编辑你选择的环境文件,调整适合本地测试的配置:
```bash
# 开发环境
DEPLOY_ENV=DEVELOPMENT
# 启用调试
DEBUG=true
FLASK_DEBUG=true
LOG_LEVEL=DEBUG
# 数据库配置(保持默认即可)
DB_USERNAME=postgres
DB_PASSWORD=difyai123456
# 向量存储本地测试推荐Weaviate
VECTOR_STORE=weaviate
```
### 3. 启动测试环境
```bash
cd docker
chmod +x start-local-test.sh
./start-local-test.sh
```
或者手动启动:
```bash
# 启动中间件数据库、Redis、向量存储
docker compose -f docker-compose.middleware.yaml --profile weaviate up -d
# 启动应用服务
docker compose up -d
```
## 🎯 服务说明
### 中间件服务docker-compose.middleware.yaml
- **PostgreSQL**: 主数据库
- **Redis**: 缓存和消息队列
- **Weaviate**: 向量数据库(默认)
- **其他**: 可根据需要启用不同的向量存储
### 应用服务docker-compose.yaml + override
- **API**: 后端服务(开发模式,支持热重载)
- **Web**: 前端服务(开发模式)
- **Nginx**: 反向代理
- **Worker**: 后台任务处理
## 📝 本地开发特性
### 热重载
- API服务会自动检测代码变化并重启
- Web服务支持前端热重载
### 数据持久化
数据存储在 `docker/volumes/` 目录下,会在容器重启后保留。
### 调试支持
- 启用Flask调试模式
- 详细的日志输出
- API文档自动生成
## 🛠️ 常用命令
```bash
# 查看服务状态
docker compose ps
# 查看日志
docker compose logs -f [service_name]
# 重启特定服务
docker compose restart api
# 进入容器调试
docker compose exec api bash
# 停止所有服务
docker compose down
# 停止并清理数据卷
docker compose -f docker-compose.middleware.yaml down -v
```
## 🔧 自定义配置
### 修改端口
在环境文件中修改:
```bash
DIFY_PORT=5002 # API端口
EXPOSE_NGINX_PORT=8080 # Web端口
```
### 切换向量存储
在环境文件中修改:
```bash
VECTOR_STORE=qdrant # 或 milvus, chroma 等
```
然后重新启动中间件:
```bash
docker compose -f docker-compose.middleware.yaml --profile qdrant up -d
```
### 使用本地 Dockerfile
如果需要使用自定义的 Dockerfile比如使用国内镜像加速
1. **创建本地 Dockerfile**
```bash
# 复制原文件
cp api/Dockerfile api/Dockerfile.local
# 编辑本地文件(比如取消阿里云镜像注释)
# 第15行取消注释RUN sed -i 's@deb.debian.org@mirrors.aliyun.com@g' /etc/apt/sources.list.d/debian.sources
```
2. **配置 override 使用本地 Dockerfile**
`docker-compose.override.yaml` 已经配置好了使用 `Dockerfile.local`
3. **构建时会自动使用**
```bash
docker compose --env-file .env build worker
```
### 添加自定义服务
编辑 `docker-compose.override.yaml` 添加新服务。
## 📚 最佳实践
1. **不要修改官方文件**: 不要直接修改 `docker-compose.yaml`,所有本地改动都放在 `docker-compose.override.yaml` 中。
2. **使用有意义的环境文件**: 使用 `.env` 文件进行本地配置。
3. **定期清理**: 测试完成后清理不需要的数据卷。
4. **版本控制**: 这些本地文件(`.env`, `docker-compose.override.yaml`, `Dockerfile.local`)会被 `.gitignore` 忽略,不会提交到仓库。
## 🐛 故障排除
### 服务启动失败
```bash
# 检查端口占用
netstat -tulpn | grep :5001
# 检查Docker资源
docker system df
# 查看详细日志
docker compose logs
```
### 数据库连接问题
```bash
# 检查数据库状态
docker compose exec db pg_isready
# 重置数据库
docker compose down
docker volume rm dify_db_data
docker compose up -d db
```
### 内存不足
减少服务资源使用:
```yaml
# 在 docker-compose.override.yaml 中添加
services:
db:
environment:
POSTGRES_SHARED_BUFFERS: 64MB
redis:
command: redis-server --maxmemory 64mb
```
## 📞 获取帮助
如果遇到问题,请:
1. 检查本文档
2. 查看 [官方文档](https://docs.dify.ai)
3. 在GitHub Issues中搜索类似问题

View File

@@ -0,0 +1,44 @@
@echo off
REM 本地测试环境启动脚本 (Windows)
REM 用于快速启动本地开发和测试环境
echo 🚀 启动Dify本地测试环境...
REM 确保在docker目录中
cd /d "%~dp0"
REM 检查.env文件是否存在
if not exist ".env" (
echo ❌ 未找到 .env 配置文件
echo 请先创建: copy .env.example .env
pause
exit /b 1
)
echo 📄 使用配置文件: .env
REM 构建worker镜像
echo 🔨 构建worker镜像...
docker compose --env-file .env build worker
REM 启动所有服务
echo 🚀 启动所有服务...
docker compose --env-file .env up -d
echo ✅ 本地测试环境启动完成!
echo.
echo 🌐 服务地址:
echo - Web界面: http://localhost
echo - API文档: http://localhost/swagger-ui.html
echo - API服务: http://localhost:5001
echo.
echo 📊 查看日志: docker compose logs -f
echo 🛑 停止服务: docker compose down
echo 🧹 清理数据: docker compose -f docker-compose.middleware.yaml down -v
echo 🔄 重启服务: docker compose restart
echo.
echo 💡 提示: 如果是首次运行,可能需要等待几分钟让服务完全启动
echo 可以使用 'docker compose ps' 查看服务状态
pause