保姆级教程:用Docker Compose在Ubuntu 22.04上一键部署Dify AI开发平台

保姆级教程:用Docker Compose在Ubuntu 22.04上一键部署Dify AI开发平台从零搭建 Dify AI 开发平台 Ubuntu 22 04 Docker Compose 实战指南 当 AI 应用开发的门槛被不断降低 像 Dify 这样的可视化编排平台正在成为个人开发者和小团队的效率倍增器 想象一下 无需从零编写复杂代码 通过拖拽组件就能构建基于大模型的智能工作流 不必担心基础设施搭建 专注在业务逻辑的创新上 这正是我们选择在 Ubuntu 22

大家好,我是讯享网,很高兴认识大家。这里提供最前沿的Ai技术和互联网信息。

# 从零搭建Dify AI开发平台:Ubuntu 22.04+Docker Compose实战指南

当AI应用开发的门槛被不断降低,像Dify这样的可视化编排平台正在成为个人开发者和小团队的效率倍增器。想象一下:无需从零编写复杂代码,通过拖拽组件就能构建基于大模型的智能工作流;不必担心基础设施搭建,专注在业务逻辑的创新上。这正是我们选择在Ubuntu 22.04上部署Dify的核心价值——用一个晚上搭建起属于你自己的AI开发沙盒环境。

1. 环境准备与依赖安装

在云服务器上部署前,建议选择4核CPU/8GB内存以上的配置(阿里云ECS的c6.large或腾讯云CVM的S5.MEDIUM4机型都是不错的选择)。我测试过在2核4GB的机器上运行,当处理复杂工作流时会出现明显卡顿。

1.1 系统基础配置

首先更新apt源并安装基础工具链:

sudo apt update && sudo apt upgrade -y sudo apt install -y git curl wget unzip 

设置时区(国内用户建议):

sudo timedatectl set-timezone Asia/Shanghai 

1.2 Docker引擎安装

Dify的核心服务都运行在Docker容器中,这里推荐使用官方安装脚本:

curl -fsSL https://get.docker.com | sh 

验证安装成功后,将当前用户加入docker组(避免每次sudo):

sudo usermod -aG docker $USER newgrp docker # 立即生效 

检查Docker版本:

docker --version # 输出应类似:Docker version 24.0.5, build 24.0.5-0ubuntu1~22.04.1 

1.3 Docker Compose部署

虽然Ubuntu 22.04自带docker-compose-plugin,但建议安装独立版本以获得完整功能:

sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose 

验证安装:

docker-compose --version # 应输出:Docker Compose version v2.23.0 

2. Dify平台部署实战

2.1 获取部署文件

使用浅克隆节省时间和空间:

git clone https://github.com/langgenius/dify.git --depth=1 cd dify/docker 

项目结构说明:

. ├── docker-compose.yml # 主编排文件 ├── .env.example # 环境变量模板 ├── middleware.env # 中间件配置 └── storage/ # 持久化数据目录 

2.2 配置文件初始化

复制并编辑环境变量文件:

cp .env.example .env nano .env 

关键配置项修改建议:

# 基础配置 APP_API_HOST=your_server_ip # 替换为你的服务器IP或域名 TZ=Asia/Shanghai # 存储配置(生产环境建议改为S3) STORAGE_TYPE=local STORAGE_LOCAL_PATH=/data/dify/storage # 日志级别 LOG_LEVEL=INFO # 调试时可设为DEBUG 

2.3 启动服务集群

首次启动会自动拉取镜像(国内用户可配置镜像加速):

docker-compose up -d 

启动的服务包括:

服务名称 端口 功能描述
dify-api 80/tcp 核心API服务
postgres 5432 关系型数据库
redis 6379 缓存服务
weaviate 8080 向量数据库

查看实时日志:

docker-compose logs -f --tail=50 

3. 平台初始化配置

3.1 服务健康检查

确认所有容器正常运行:

docker-compose ps 

预期输出应显示所有服务状态为"running":

NAME COMMAND SERVICE STATUS PORTS dify-api "/entrypoint.sh" app running 0.0.0.0:80->80/tcp dify-postgres "docker-entrypoint.s…" postgres running 5432/tcp dify-redis "docker-entrypoint.s…" redis running 6379/tcp dify-weaviate "/bin/weaviate --hos…" weaviate running 8080/tcp 

3.2 管理员账户设置

访问 http://your_server_ip 会出现初始化页面,需要设置:

  • 管理员邮箱(建议使用工作邮箱)
  • 密码(复杂度要求:至少8位含大小写字母和数字)

> 重要提示:首次登录后立即进入「系统设置」→「安全设置」配置SMTP邮件服务,否则无法接收密码重置邮件。

3.3 模型接入配置

Dify支持多种大模型接入方式:

商业API接入(如OpenAI)

  1. 进入「系统设置」→「模型提供商」
  2. 选择OpenAI并填写:
    • API Key(从OpenAI平台获取)
    • Base URL(默认https://api.openai.com/v1)

本地模型接入(如Llama 2)

# 在docker-compose.yml中添加服务 services: local-ai: image: quay.io/go-skynet/local-ai ports: - "8081:8080" environment: - MODEL_PATH=/models volumes: - ./models:/models 

然后在Dify控制台配置模型端点:

名称:Llama-2-7B 模型类型:LLaMA 基础URL:http://local-ai:8080 

4. 生产环境优化指南

4.1 性能调优建议

调整Docker资源限制(在docker-compose.yml中):

services: app: deploy: resources: limits: cpus: '2' memory: 4G restart: unless-stopped 

数据库优化参数(postgres部分):

environment: POSTGRES_SHARED_BUFFERS: 1GB POSTGRES_EFFECTIVE_CACHE_SIZE: 3GB 

4.2 数据持久化方案

配置外部存储卷防止数据丢失:

mkdir -p /data/dify/{postgres,redis,weaviate} 

修改docker-compose.yml挂载点:

volumes: postgres_data: driver_opts: type: none device: /data/dify/postgres o: bind 

4.3 安全加固措施

  1. HTTPS加密(使用Nginx反向代理):
server } 
  1. 防火墙规则
sudo ufw allow 22/tcp sudo ufw allow 443/tcp sudo ufw enable 
  1. 定期备份策略
# 数据库备份 docker exec dify-postgres pg_dump -U postgres dify > dify_backup_$(date +%Y%m%d).sql # 整个项目备份 tar czvf dify_backup_$(date +%Y%m%d).tar.gz /data/dify 

5. 典型问题排查手册

5.1 容器启动异常

现象docker-compose up后部分服务不断重启

排查步骤:

  1. 查看具体容器日志:
docker-compose logs service_name 
  1. 常见原因:
  • 端口冲突 → 修改docker-compose.yml中的ports映射
  • 磁盘空间不足 → df -h检查并清理
  • 内存不足 → 增加swap空间或升级配置

5.2 模型连接失败

诊断方法

# 测试API连通性 docker exec -it dify-api curl -v https://api.openai.com # 检查DNS解析 docker exec -it dify-api nslookup api.openai.com 

解决方案

  • 国内服务器可能需要配置代理环境变量:
HTTP_PROXY=http://your_proxy:port HTTPS_PROXY=http://your_proxy:port 

5.3 知识库构建失败

当上传PDF/Word文档出现处理异常时:

  1. 检查文档格式是否合规
  2. 查看weaviate向量库状态:
docker exec -it dify-weaviate curl localhost:8080/v1/meta 
  1. 调整文本分割策略:
# 在Dify工作流中修改chunk参数 chunk_size = 500 # 字符数 chunk_overlap = 50 

6. 进阶应用场景

6.1 多团队协作部署

通过环境变量实现多租户隔离:

# .env 配置 TENANT_ID=team_a STORAGE_LOCAL_PATH=/data/dify/${TENANT_ID} 

6.2 自定义插件开发

示例:开发天气查询插件

  1. 创建插件目录结构:
plugins/ └── weather/ ├── __init__.py ├── config.json └── main.py 
  1. 编写插件逻辑(main.py):
import requests from dify.plugins import PluginBase class WeatherPlugin(PluginBase): def execute(self, params): city = params.get('city') response = requests.get(f"https://api.weatherapi.com/v1/current.json?key=YOUR_KEY&q={city}") return response.json() 
  1. 挂载到Dify容器:
volumes: - ./plugins:/app/plugins 

6.3 性能监控方案

部署Prometheus+Grafana监控栈:

# docker-compose.yml新增 services: prometheus: image: prom/prometheus ports: ["9090:9090"] volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml grafana: image: grafana/grafana ports: ["3000:3000"] 

配置示例(prometheus.yml):

scrape_configs: - job_name: 'dify' static_configs: - targets: ['dify-api:80'] 
小讯
上一篇 2026-04-12 21:39
下一篇 2026-04-12 21:37

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/252275.html