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

从联网到离线:Dify 的 Docker 镜像批量下载与全流程离线部署指南


从联网到离线:Dify 的 Docker 镜像批量下载与全流程离线部署指南

前言

在离线环境中部署 Dify(开源 LLM 应用开发平台)时,如何提前在联网环境中批量下载指定架构的镜像并实现一键部署?本文以 Dify 的 docker-compose 编排文件为例,详细讲解从镜像拉取、批量导出到离线部署的全流程,解决以下核心问题:

  • 精准下载 linux/amd64 架构的 Docker 镜像
  • 批量打包镜像并迁移至离线环境
  • 避免 docker-compose 启动时拉取远程镜像

适用场景

  1. 生产服务器无外网访问权限
    2.开发环境与生产环境需保持镜像版本严格一致
  2. 需快速搭建 Dify 的离线开发/测试环境

准备工作

1. 联网机器环境要求

  • Docker 已安装(版本 ≥ 20.10,支持 -platform 参数)
  • Docker Compose 已安装
  • 可访问 Docker Hub 或私有镜像仓库

2. 离线机器环境要求

  • Docker 及 Docker Compose 已安装
  • 系统架构为 linux/amd64

完整步骤

步骤 1:获取 Dify 的镜像清单

从 Dify 的官方 docker-compose.yaml 中提取所有镜像名称及版本:

git clone <https://github.com/langgenius/dify.git>
cd dify/docker
cat docker-compose.yaml | grep 'image:'

# 示例输出:
# image: langgenius/dify-api:0.15.3
# image: postgres:15.3
# image: redis:7.0
# image: langgenius/dify-web:0.15.3

整理镜像列表 images.txt

langgenius/dify-api:0.15.3
postgres:15.3
redis:7.0
langgenius/dify-ui:0.15.3

可以执行以下命令直接保存为images.txt文件

grep 'image:' docker-compose.yaml | awk '{print $2}' | sort -u > images.txt

步骤 2:批量下载指定架构的镜像

使用 --platform 参数强制拉取 linux/amd64 镜像:

mkdir -p saved_images && while read img; do
  docker pull --platform linux/amd64 "$img"
  docker save -o "saved_images/$(echo $img | tr '/' '_' | tr ':' '_').tar" "$img"
done < images.txt

步骤 3:打包镜像文件

将镜像文件打包为 .gz 文件:

tar czvf dify_images.tar.gz saved_images/


步骤 4:迁移至离线环境

使用 U 盘或内网传输工具(如 scp)将压缩包复制到目标服务器:

scp dify_images.tar.gz user@offline-server:/opt


步骤 5:离线环境加载镜像并(强制离线模式)启动

解压并批量加载镜像:

# 1. 解压并加载镜像
tar xzvf dify_images.tar.gz
cd saved_images
find . -name "*.tar" -exec docker load -i {} \;

# 2. 验证加载结果
docker images
# 输出应包含:
# langgenius/dify-api   0.15.3
# postgres              15.3
# redis                 7.0
# langgenius/dify-ui    0.15.3

# 3. 启动服务(强制使用本地镜像)
cd /path/to/docker-compose.yaml

docker-compose up -d --no-pull  # 如果docker-compose版本是1.+使用这个
docker-compose up -d --pull=never # 如果docker-compose版本是2.+使用这个

# 4. 验证容器状态
docker ps -a


验证部署

访问 Web 界面

浏览器打开 http://离线服务器IP/install,应看到 Dify 的初始化界面。Dify的默认端口是80


常见问题排查

Q1:启动时提示 “No such image”

原因:镜像名称或标签与 docker-compose.yaml 不匹配。

解决

# 对比本地镜像与 compose 文件
docker images | grep dify-api
# 修改 compose 文件匹配实际标签

Q2:Redis 容器频繁重启

原因:默认配置未设置密码导致鉴权失败。

解决:在 docker-compose.yaml 中添加 Redis 密码:

redis:
  image: redis:7.0
  command: redis-server --requirepass your_password

结语

通过本教程,您已掌握从精准镜像拉取到全离线部署 Dify 的完整流程。关键要点:

  1. 使用 -platform 确保架构一致性
  2. 批量脚本处理提高效率
  3. -no-pull--pull=never参数强制使用本地镜像

建议将离线部署流程封装成自动化脚本,进一步提升部署可靠性。欢迎在评论区分享您的实践心得!


扩展阅读

  • Dify 官方文档
  • Docker 多架构镜像管理指南

http://www.kler.cn/a/586225.html

相关文章:

  • 第27周JavaSpringboot电商进阶开发 3.常见问题解答
  • 04 | 初始化 fastgo 项目仓库
  • Spring Boot与Apache Ignite集成:构建高性能分布式缓存和计算平台
  • 大语言模型-1.2-大模型技术基础
  • 2025 职业革命:AI 重构就业图谱的生存法则
  • 【PyCharm2024】一些好用的小功能
  • [Java实战]性能优化qps从1万到3万
  • 分布式事务管理:使用Seata简化微服务事务处理
  • vue3 中使用 Recorder 实现录音并上传,并用Go语言调取讯飞识别录音(Go语言)
  • 【环境问题】Vscode上ssh无法连接问题汇总
  • 用Java来创建数字游戏
  • HedgeAgents:开启金融交易新纪元的平衡系统
  • 微信小程序面试内容整理-JavaScript
  • HarmonyOS NEXT - 电商App实例四(登录界面)
  • Qt:绘图API
  • 20250314-vue-Props3
  • Free QWQ - 世界首个免费无限制分布式 QwQ API
  • Milvus 中常见相似度度量方法
  • 考研复习,主动学习”与“被动接收”的结合之道
  • Android自动化测试工具