作为一名长期在AI领域摸爬滚打的开发者,我深知在本地环境快速部署AI开发平台的重要性。Dify作为一款开源的AI应用开发平台,能够帮助开发者快速构建和部署AI应用。今天我就来分享在Windows系统下通过Docker部署Dify的完整过程,包含我踩过的坑和实战技巧。
在开始安装前,建议先确认你的Windows系统满足以下要求:
注意:家庭版Windows需要安装WSL2后端,专业版以上建议使用Hyper-V
访问Docker官网下载Windows版安装包:
安装过程中的关键选项:
首次启动配置:
bash复制# 在PowerShell中验证安装
docker --version
docker-compose --version
正常应显示类似以下版本信息:
code复制Docker version 24.0.2, build cb74dfc
Docker Compose version v2.18.1
由于国内访问Docker Hub速度较慢,建议配置镜像加速器:
json复制{
"registry-mirrors": [
"https://mirror.baidubce.com",
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com"
]
}
方式一:GitHub官方仓库(推荐)
bash复制git clone https://github.com/langgenius/dify.git
这种方式可以方便后续更新,且能获取最新版本。
方式二:GitHub Releases下载
方式三:国内网盘备用
解压后主要关注以下目录:
code复制dify/
├── docker/ # Docker部署相关文件
│ ├── .env.example # 环境变量示例文件
│ └── docker-compose.yml
├── api/ # 后端服务代码
└── web/ # 前端界面代码
bash复制cd dify/docker
bash复制cp .env.example .env
ini复制# 数据库配置
POSTGRES_PASSWORD=your_strong_password
# Redis配置
REDIS_PASSWORD=your_redis_password
# 服务端口(默认80,冲突可修改)
NGINX_HTTP_PORT=80
在docker目录下执行:
bash复制docker compose up -d
这个命令会:
查看实时日志:
bash复制docker compose logs -f
检查各容器状态:
bash复制docker ps
正常应看到5个容器(api、web、nginx、postgres、redis)状态均为"Up"
问题一:端口冲突
docker compose up -d --force-recreate问题二:镜像拉取失败
bash复制docker pull postgres:13-alpine
docker pull redis:6-alpine
问题三:磁盘空间不足
bash复制# 清理无用镜像
docker system prune -a
应用创建测试
API连接测试
bash复制curl -X POST "http://localhost/api/v1/completion-messages" \
-H "Authorization: Bearer your-api-key" \
-H "Content-Type: application/json" \
-d '{"inputs":{},"query":"你好"}'
调整Docker资源分配:
数据库优化:
sql复制-- 在PostgreSQL中执行
ALTER SYSTEM SET shared_buffers = '1GB';
ALTER SYSTEM SET effective_cache_size = '3GB';
启用Redis持久化:
修改docker-compose.yml中redis配置:
yaml复制redis:
image: redis:6-alpine
command: redis-server --save 60 1 --loglevel warning
停止所有服务:
bash复制docker compose down
重启特定服务(如api):
bash复制docker compose restart api
备份数据库:
bash复制docker compose exec postgres pg_dump -U postgres dify > dify_backup.sql
获取最新代码:
bash复制git pull origin main
重新构建服务:
bash复制docker compose up -d --build
执行数据库迁移:
bash复制docker compose exec api alembic upgrade head
日志查看技巧
bash复制# 查看api服务最近100行日志
docker compose logs api --tail=100
# 实时查看web服务日志
docker compose logs web -f
数据库连接测试
bash复制docker compose exec postgres psql -U postgres -c "\l"
服务健康检查
bash复制curl -I http://localhost/api/health
对于需要在Dify基础上进行二次开发的用户,建议采用以下配置:
json复制{
"version": "0.2.0",
"configurations": [
{
"name": "Dify API",
"type": "python",
"request": "launch",
"module": "uvicorn",
"args": ["api.main:app", "--reload"],
"env": {"ENV": "development"}
}
]
}
修改默认密码:
bash复制docker compose exec postgres psql -U postgres -c "ALTER USER postgres WITH PASSWORD 'new_strong_password';"
启用HTTPS:
限制管理员IP:
nginx复制location /admin {
allow 192.168.1.100;
deny all;
}
定期轮换API密钥:
在docker-compose.yml中添加:
yaml复制services:
prometheus:
image: prom/prometheus
ports:
- "9090:9090"
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
grafana:
image: grafana/grafana
ports:
- "3000:3000"
对于正式环境部署,建议考虑以下优化:
我最近在一个项目中采用这套部署方案,成功支持了日均10万+的API调用。关键是要根据实际业务需求调整Docker资源配置,并做好监控告警。