# Dify 用于代理工作流程开发的生产就绪型平台。

# docker 部署运行 dify

🚀 一、快速启动(单机部署)

  1. 环境准备

# 安装 Docker 和 Docker Compose

sudo apt update && sudo apt install docker.io docker-compose sudo systemctl enable --now docker

# 验证版本

docker --version && docker-compose --version

  1. 部署 Dify

# 创建工作目录

mkdir -p ~/dify && cd ~/dify

# 下载官方配置

curl -O https://raw.githubusercontent.com/langgenius/dify/main/docker/docker-compose.yaml curl -O https://raw.githubusercontent.com/langgenius/dify/main/docker/.env.example

# 初始化配置文件

cp .env.example .env

  1. 启动服务 docker compose up -d

# 查看启动状态(等待所有容器状态为 healthy)

docker compose ps

访问 http://localhost 初始化管理员账号 ⏱️ 首次启动耗时:约 3-5 分钟(需下载 1.2GB 镜像)

⚙️ 二、关键配置详解

  1. 端口修改(.env 文件)

# 修改服务端口(默认 80)

SERVER_PORT=8080

# 修改数据库端口(避免冲突)

MYSQL_HOST_PORT=3307

  1. 模型集成配置

# 启用本地模型支持(如 Ollama)

CUSTOM_MODEL_ENABLED=true OLLAMA_API_BASE_URL=http://host.docker.internal:11434

  1. 存储持久化

# 在 docker-compose.yaml 中添加卷映射

services: db: volumes: - ./mysql_data:/var/lib/mysql # MySQL 数据 redis: volumes: - ./redis_data:/data # Redis 数据 storage: volumes: - ./storage_data:/data # 上传文件

🐳 三、生产级部署优化

  1. 资源限制(防止 OOM)

# docker-compose.yaml 中添加

services: api: deploy: resources: limits: memory: 4G cpus: '2.0' worker: deploy: resources: limits: memory: 2G cpus: '1.0'

  1. HTTPS 安全配置

# nginx-proxy 配置 (在 docker-compose.yaml 旁新建 nginx.conf)

server { listen 443 ssl; server_name dify.yourdomain.com;

ssl_certificate /etc/letsencrypt/live/dify.yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/dify.yourdomain.com/privkey.pem;

location / { proxy_pass http://dify-web:80; proxy_set_header Host $host; } }

# 启动时挂载证书

volumes:

  • ./certs:/etc/letsencrypt
  1. 高可用部署(K8s 示例)

# dify-k8s.yaml

# apiVersion: apps/v1 kind: Deployment metadata: name: dify-api spec: replicas: 3 template: spec: containers: - name: api image: langgenius/dify-api:latest envFrom: - configMapRef: name: dify-config

apiVersion: v1 kind: ConfigMap metadata: name: dify-config data: DATABASE_URL: "mysql://user:pass@mysql-service:3306/dify" REDIS_URL: "redis://redis-service:6379"

⚠️ 四、常见问题解决

  1. 容器启动失败

# 查看实时日志

docker compose logs -f api

# 典型错误处理

ERROR [db] Connection refused → 检查 MySQL 容器是否启动 WARN [Redis] Timeout → 增加 .env 中 REDIS_TIMEOUT=30

  1. 知识库索引异常

# 手动重建索引

docker compose exec api python manage.py reindex_all

  1. 模型连接问题

# .env 添加调试模式

DEBUG_MODE=true # 查看详细模型调用日志

🔄 五、日常维护命令 操作 命令 启动服务 docker compose up -d 停止服务 docker compose down 更新版本 docker compose pull && docker compose up -d 备份数据库 docker compose exec db mysqldump -u root -p$MYSQL_ROOT_PASSWORD dify > backup.sql 查看资源占用 docker stats 清理无用镜像 docker system prune -a

📦 六、数据备份方案

  1. 全量备份脚本 #!/bin/bash

# backup-dify.sh

DATE=$(date +%F) tar -czvf dify-backup-$DATE.tar.gz
~/dify/mysql_data
~/dify/redis_data
~/dify/storage_data
~/dify/.env

  1. 定时任务(每日 2AM 备份)

# 添加 cron 任务

crontab -e 0 2 * * * /path/to/backup-dify.sh

💡 七、典型部署架构图 graph LR A[用户] --> B[Nginx 443] B --> C[Dify-Web Frontend] B --> D[Dify-API Backend] D --> E[(MySQL)] D --> F[(Redis)] D --> G[Worker] G --> H[向量数据库] H --> I[模型服务]

访问路径:https://your-domain.com → Nginx → Dify Web → Dify API → 数据库/模型

通过以上步骤,您可在 10 分钟内完成生产级 Dify 部署。如需集成企业微信/飞书或配置集群部署,可进一步提供针对性方案!