当前位置: 首页 > news >正文

手把手教你:在Ubuntu 22.04上用Docker离线部署Dify AI工作流平台(附全套镜像包)

企业级内网环境下的Dify AI工作流平台离线部署实战指南

在金融、军工等对数据安全要求极高的行业,核心业务系统往往运行在完全隔离的内网环境中。传统基于公有云的AI工具链部署方式面临两大痛点:一是模型推理可能涉及敏感数据外传风险,二是生产环境服务器通常禁止连接外网下载依赖包。本文将手把手带您完成Dify AI工作流平台Ubuntu 22.04 Server上的全离线部署,所有组件均通过预下载的Docker镜像包实现,真正实现"开箱即用"的零网络依赖部署体验。

1. 离线部署环境准备

1.1 虚拟机与操作系统配置

选择VMware Workstation 17作为虚拟化平台,其优势在于:

  • 支持完整的硬件虚拟化隔离
  • 提供稳定的快照回滚功能
  • 内置NAT网络模式可模拟内网环境

推荐配置参数

CPU: 4核以上(需开启VT-x/AMD-V虚拟化支持) 内存: 8GB以上 磁盘: 100GB SSD(建议使用Thin Provision模式) 网络适配器: NAT模式(模拟企业内网环境)

安装Ubuntu 22.04.5 Server时需特别注意:

  1. 在软件选择步骤取消所有云服务相关选项
  2. 分区方案建议:
    • /boot:1GB
    • swap:内存的1.5倍
    • /:剩余全部空间
  3. 安装完成后立即执行:
    sudo apt update && sudo apt upgrade -y sudo apt install openssh-server -y

1.2 离线资源包准备

我们已为您整理好全套部署资源(下载链接见文末):

  • 基础组件

    • ubuntu_squid_latest.tar:本地缓存代理
    • nginx_latest.tar:Web服务器
    • postgres_15-alpine.tar:数据库
    • redis_6-alpine.tar:缓存服务
  • Dify核心组件

    • langgenius_dify-api_0.15.3.tar:主服务
    • langgenius_dify-web_0.15.3.tar:前端界面
    • langgenius_dify-sandbox_0.2.10.tar:安全沙箱

提示:所有镜像均已在纯净环境中测试通过,哈希校验值包含在资源包的checksum.txt文件中

2. Docker离线安装与配置

2.1 离线安装Docker引擎

通过预下载的.deb包完成安装:

# 安装依赖 sudo dpkg -i libltdl7_2.4.6-14_amd64.deb sudo dpkg -i docker-ce-cli_20.10.12~3-0~ubuntu-jammy_amd64.deb sudo dpkg -i containerd.io_1.4.12-1_amd64.deb sudo dpkg -i docker-ce_20.10.12~3-0~ubuntu-jammy_amd64.deb # 验证安装 sudo docker --version

2.2 配置本地镜像仓库

为避免后续操作中的网络请求,需修改Docker配置:

sudo mkdir -p /etc/docker sudo tee /etc/docker/daemon.json <<EOF { "registry-mirrors": [], "insecure-registries": [], "debug": false, "experimental": false } EOF sudo systemctl restart docker

3. Docker镜像导入与管理

3.1 批量导入镜像

将下载的镜像包上传至服务器后执行:

for image in *.tar; do echo "正在导入 $image..." docker load -i $image done

常见问题处理

错误现象解决方案
"no space left on device"执行docker system prune -a清理空间
"invalid tar header"重新下载镜像包并校验MD5
"permission denied"在命令前添加sudo或当前用户加入docker组

3.2 镜像版本验证

导入完成后检查关键镜像:

docker images | grep -E 'dify|postgres|redis'

应显示类似结果:

langgenius/dify-api 0.15.3 a1b2c3d4e5f6 2 weeks ago 1.2GB langgenius/dify-web 0.15.3 b2c3d4e5f6g7 2 weeks ago 850MB postgres 15-alpine c3d4e5f6g7h8 3 weeks ago 158MB

4. Dify平台部署与调优

4.1 编写docker-compose.yml

创建以下配置文件:

version: '3' services: postgres: image: postgres:15-alpine environment: POSTGRES_PASSWORD: difysecurepass POSTGRES_USER: difyadmin POSTGRES_DB: dify_core volumes: - pg_data:/var/lib/postgresql/data redis: image: redis:6-alpine command: redis-server --requirepass difyredispass dify-api: image: langgenius/dify-api:0.15.3 depends_on: - postgres - redis environment: - DB_URL=postgresql://difyadmin:difysecurepass@postgres:5432/dify_core - REDIS_HOST=redis - REDIS_PASSWORD=difyredispass ports: - "5001:5001" dify-web: image: langgenius/dify-web:0.15.3 depends_on: - dify-api ports: - "3000:3000" volumes: pg_data:

4.2 启动与验证服务

执行部署命令:

docker-compose up -d

检查服务状态:

docker-compose ps

正常输出应显示所有容器状态为"Up"。

性能优化建议

  • 对于高并发场景,调整API服务的JVM参数:
    dify-api: environment: - JAVA_OPTS=-Xms2g -Xmx4g -XX:MaxRAMPercentage=75.0
  • PostgreSQL配置优化:
    ALTER SYSTEM SET shared_buffers = '2GB'; ALTER SYSTEM SET effective_cache_size = '6GB';

5. 高级配置与维护

5.1 内网域名解析配置

在没有DNS服务的环境中,需修改hosts文件:

sudo tee -a /etc/hosts <<EOF 127.0.0.1 dify.local EOF

5.2 数据备份方案

设置每日自动备份:

# 创建备份脚本 sudo tee /usr/local/bin/dify_backup.sh <<'EOF' #!/bin/bash BACKUP_DIR=/opt/dify_backups/$(date +%Y%m%d) mkdir -p $BACKUP_DIR docker exec -t $(docker-compose ps -q postgres) pg_dump -U difyadmin dify_core > $BACKUP_DIR/dify_db.sql docker-compose config > $BACKUP_DIR/docker-compose.yml EOF # 设置定时任务 sudo crontab -l | { cat; echo "0 2 * * * /usr/local/bin/dify_backup.sh"; } | sudo crontab -

5.3 日志收集方案

配置ELK栈进行日志分析:

# 创建Filebeat配置文件 sudo tee /etc/filebeat/filebeat.yml <<EOF filebeat.inputs: - type: container paths: - '/var/lib/docker/containers/*/*.log' output.logstash: hosts: ["logstash.internal:5044"] EOF

资源下载

所有部署所需的离线资源包已上传至百度网盘:

链接: https://pan.baidu.com/s/xxxxxx 提取码: xxxx 压缩包包含: - 完整Docker镜像集合(含校验文件) - VMware 17安装包及许可证 - Ubuntu 22.04.5 Server镜像 - 配套工具集(WinSCP等)
http://www.jsqmd.com/news/644013/

相关文章:

  • QQ音乐解码神器qmcdump:三步解锁加密音乐,让音乐真正属于你
  • 更换轮胎四轮定位
  • NVIDIA Profile Inspector终极指南:解锁显卡隐藏性能的简单方法
  • python的flash_attn模块windows版本,基于python3.12,cuda13.2版本编译。
  • HPA与VPA自动伸缩实战(应对流量洪峰的弹性方案)
  • 技术流程图的步骤顺序可视化
  • AirPodsDesktop:Windows用户必备的苹果耳机完整体验指南
  • 2026年木制茶叶盒厂家品牌推荐/竹木制品,实木木盒,木制相框 - 品牌策略师
  • 实景三维模型修复实战:DP、模方、SVS核心功能与场景化应用指南
  • 模块化基础:包、模块、导入导出设计思想
  • 西门子1200PLC(入门)1
  • 【异常】Cursor编辑器 “Taking longer than expected...“ 报错全链路排查与解决方案
  • 【四足机器人运动学实战】三维腿部建模:从几何视图到完整解算
  • 青藏高原冻土退化趋势分析(1961-2020):基于TTOP模型与Stefan方程的综合研究
  • 如何安全解锁WeMod Pro功能?WandEnhancer开源方案深度解析
  • SillyTavern技术架构解析:构建高性能LLM前端与角色系统的实战指南
  • 支付宝消费红包回收让沉睡的零钱重新流动 - 京顺回收
  • 安卓相机直连SDK架构设计:如何为图片直播构建可靠传输通道
  • 告别回调地狱:在 C++ Web 框架中全面拥抱协程
  • 阿里云代理商:解锁 OpenClaw 高效工作流 8 大核心技能实战手册
  • HoRain云--Kotlin命令行编译终极指南:从入门到精通
  • 剖析比较好的全脑教育企业,教学质量与市场口碑深度解读 - mypinpai
  • 非视距·自愈·广覆盖|黎阳之光1.45.8GHz宽带自愈网无线基站,重构工业级无线通信
  • 【异常】Cursor报错We‘re having trouble connecting to the model provider. This might be temporary
  • AnyChart 的tagCloud组件
  • 别再让电源振荡了!手把手教你给UC3842加斜坡补偿(附计算步骤)
  • 3步解决乐谱数字化难题:Audiveris OMR引擎从图像到可编辑乐谱的完整实践指南
  • 【从0到1构建一个ClaudeAgent】规划与协调-任务系统
  • 2026年好用的高精度线材轧机推荐,企业选择探讨 - myqiye
  • 基于Qwen3.5-2B的MySQL智能运维助手:安装配置与性能调优