
1. 项目概述Docker化部署dify与ollama的技术实践在当今的AI应用开发领域快速搭建和部署智能工作流平台已成为刚需。dify作为一款开源的智能体开发平台结合ollama的本地大模型运行能力能够为开发者提供从原型设计到生产部署的全流程支持。而Docker容器化技术则完美解决了环境依赖和部署一致性的痛点。本文将详细记录我在Linux环境下通过Docker Compose完整部署difvollama的技术方案包含从镜像准备到服务调通的每个关键步骤。这个方案特别适合以下场景需要快速搭建AI能力中台的技术团队希望本地运行大模型同时保持灵活部署的开发者研究智能体工作流但受限于云服务成本的个人研究者2. 环境准备与架构设计2.1 基础环境配置推荐使用Ubuntu 22.04 LTS作为宿主机系统确保内核版本≥5.4。以下是必须的准备工作# 安装Docker引擎 sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io sudo systemctl enable --now docker # 安装Docker Compose插件 sudo apt-get install -y docker-compose-plugin重要提示如果遇到virtualization support not detected错误需进入BIOS开启VT-x/AMD-V虚拟化支持并在Windows功能中启用Hyper-V和Windows虚拟机监控程序平台。2.2 系统资源规划组件最低配置推荐配置dify-core2核CPU/4GB内存4核CPU/8GB内存ollama服务4核CPU/16GB内存8核CPU/32GB内存PostgreSQL2核CPU/4GB内存4核CPU/8GB内存Redis1核CPU/2GB内存2核CPU/4GB内存2.3 网络架构设计采用分层的容器网络模型前端服务层dify-web端口8080应用服务层dify-api端口5001模型服务层ollama端口11434数据存储层PostgreSQLRedis通过自定义bridge网络实现容器间隔离通信关键服务间采用域名解析而非IP直连。3. 核心组件部署实战3.1 ollama模型服务部署使用官方镜像部署ollama服务# docker-compose.ollama.yml services: ollama: image: ollama/ollama:latest ports: - 11434:11434 volumes: - ollama_data:/root/.ollama deploy: resources: reservations: cpus: 4 memory: 16G volumes: ollama_data:启动后拉取所需模型以llama2为例docker exec -it ollama ollama pull llama23.2 dify平台部署配置完整的dify服务栈配置示例# docker-compose.dify.yml version: 3.8 services: redis: image: redis:6-alpine ports: - 6379:6379 volumes: - redis_data:/data postgres: image: postgres:13-alpine environment: POSTGRES_DB: dify POSTGRES_USER: dify POSTGRES_PASSWORD: dify123 volumes: - pg_data:/var/lib/postgresql/data api: image: langgenius/dify-api:latest depends_on: - redis - postgres environment: - DB_TYPEpostgresql - DB_HOSTpostgres - DB_PORT5432 - DB_NAMEdify - DB_USERdify - DB_PASSWORDdify123 ports: - 5001:5001 web: image: langgenius/dify-web:latest depends_on: - api ports: - 8080:3000 volumes: redis_data: pg_data:3.3 服务连通性测试验证ollama服务可用性curl http://localhost:11434/api/generate -d { model: llama2, prompt: 为什么天空是蓝色的 }检查dify后台状态docker logs dify-api | grep Application startup4. 高级配置与优化4.1 模型管理技巧通过ollama的Model Library功能管理多个模型# 列出已下载模型 docker exec ollama ollama list # 删除特定模型 docker exec ollama ollama rm llama2 # 创建自定义模型配置 docker exec -it ollama ollama create my-model -f /root/modelfile.txt4.2 dify工作流配置在dify控制台配置ollama连接进入模型供应商设置页添加自定义供应商填写Endpoint为http://ollama:11434在应用工作流中选择Ollama作为推理引擎4.3 性能调优参数关键JVM参数调整API服务environment: - JAVA_OPTS-Xms4g -Xmx4g -XX:MaxRAMPercentage75%Redis连接池配置environment: - REDIS_POOL_SIZE20 - REDIS_TIMEOUT50005. 常见问题排查指南5.1 容器启动故障症状dify-api不断重启检查PostgreSQL连接日志docker logs postgres | grep connection验证网络连通性docker exec dify-api nc -zv postgres 5432典型解决方案延长depends_on的healthcheck超时5.2 模型推理超时症状ollama返回504错误调整ollama的启动参数environment: - OLLAMA_NUM_PARALLEL2 - OLLAMA_MAX_LOADED_MODELS1在dify侧增加超时设置{inference_timeout: 300}5.3 存储卷权限问题症状ollama无法保存模型修复命令sudo chown -R 1000:1000 /var/lib/docker/volumes/ollama_data预防措施在compose文件显式声明volume权限volumes: ollama_data: driver_opts: o: uid1000 o: gid10006. 生产环境部署建议6.1 安全加固措施网络隔离networks: dify_net: driver: bridge internal: true证书配置web: environment: - HTTPS_ENABLEDtrue - SSL_CERT_PATH/certs/fullchain.pem - SSL_KEY_PATH/certs/privkey.pem6.2 监控方案实现Prometheus监控配置示例services: prometheus: image: prom/prometheus ports: - 9090:9090 volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml grafana: image: grafana/grafana ports: - 3000:3000关键监控指标ollamaGPU利用率、推理延迟difyAPI响应时间、队列深度数据库连接数、查询延迟6.3 备份与恢复策略模型数据备份方案# 备份ollama模型 docker run --rm -v ollama_data:/data -v $(pwd):/backup busybox tar czf /backup/ollama_backup.tar.gz /data # 恢复模型数据 docker run --rm -v ollama_data:/data -v $(pwd):/backup busybox tar xzf /backup/ollama_backup.tar.gz -C /数据库备份方案docker exec postgres pg_dump -U dify -Fc dify dify_backup.dump