> 技术文档 > Linux离线部署Dify:Docker从镜像拉取打包到无网环境中部署

Linux离线部署Dify:Docker从镜像拉取打包到无网环境中部署


文章目录

  • 前言
  • 一、在线环境操作
        • 1. 获取dify项目(使用魔法)
        • 2.进入项目中docker目录
        • 3.镜像拉取
        • 4.查看镜像
        • 5.镜像打包
        • 6.镜像(项目)上传
  • 二、离线环境操作
        • 1.镜像导入
        • 2.启动服务
        • 3.验证容器启动状态
        • 4.访问服务
  • 三、部分参考链接

前言

设备:Ubuntu GPU服务器(离线)、Windows10(联网:我的本机电脑)
工具:putty(操作离线服务器)、WinSCP(文件上传)
前置条件:两台设备均安装Docker

# 验证Docker环境 docker --version && docker-compose --version

在线环境安装git(用于dify项目拉取,也可以直接下载项目压缩包)


一、在线环境操作

1. 获取dify项目(使用魔法)

拉取项目到目标目录

git clone https://github.com/langgenius/dify.git
2.进入项目中docker目录

Win+R 输入cmd打开命令行,切换到项目存放目录(我的在I盘)

cd dify/docker

在这里插入图片描述

3.镜像拉取

需要等待一段时间,会有拉取进度;如果没有登录docker可能会报错,我就报错了,采用docker login命令输入用户名、密码再执行以下命令即可。(用户名/密码一定要记住)

docker-compose pull # 仅拉取镜像不启动容器
4.查看镜像
docker iamges

在这里插入图片描述
在这里插入图片描述

我这边拉取下来一共9个镜像

5.镜像打包

可以单个单独打包再上传,可以多个镜像统一打包(镜像间空格分隔)上传,我这边采取的是统一打包。
打包命令:docker save -o XXX.tar REPOSITORY:TAG(XXX包名自定义,REPOSITORY、TAG通过docker iamges查看镜像获取)
我的9个镜像都打包了,参考命令:

docker save -o dify-images.tar langgenius/dify-api:1.1.3 langgenius/dify-api:1.1.3 langgenius/dify-web:1.1.3 postgres:15-alpine redis:6-alpine langgenius/dify-sandbox:0.2.11 langgenius/dify-plugin-daemon:0.0.6-local ubuntu/squid:latest semitechnologies/weaviate:1.19.0 nginx:latest
6.镜像(项目)上传

搜索了很多dify离线部署博客都是让上传.tar打包后的镜像文件及docker-compose配置文件,但是尝试了这些方法都存在一个问题:镜像正常加载到离线环境,但是使用docker-compose up -d启动服务时就会报错,AI了一下错误提示可能是配置文件有问题,找了一个下午资料、修改配置文件(也不知道怎么修改,参考很少)也没解决该问题,资料的方案基本都是让上传打包的镜像及配置文件,加载镜像到docker再启动容器,后面找到一篇博客是将整个项目上传到离线环境的,再执行docker-compose up -d时成功了!!非常感谢那位博主!er)
在这里插入图片描述

二、离线环境操作

1.镜像导入

进入项目的docker目录,使用命令docker load -i XXX.tar将镜像导入docker,使用docker iamges验证镜像是否导入成功。

# 镜像导入docker load -i dify-images.tar# 验证镜像docker iamges

在这里插入图片描述
在这里插入图片描述
多出的镜像是之前导入的webUI(不稳定,效果不太好,所以来换成dify了)

2.启动服务

启动容器docker-compose up -ddocker compose up -d,具体用哪个要看你的服务器上docker、Docker Compose版本,可以都试一下。

docker-compose up -d

在这里插入图片描述
可喜可贺,成功了!(在这个坑待太久了!o(╥﹏╥)o)

3.验证容器启动状态
docker ps

在这里插入图片描述
容器已启动!

4.访问服务

访问http://ip:80 (默认的是80端口,以上容器状态查看时可以看端口)
在这里插入图片描述
好了,到此告一段落了,后面配置配完再记坑O(∩_∩)O哈哈~。


三、部分参考链接

1.LLM - Docker离线部署Dify:从镜像打包到无网环境部署_dify 离线部署-CSDN博客
2.在离线服务器上基于源代码部署Dify以及基于Docker部署运行Dify的实践 - 知乎
3.Dify 外网打包镜像到服务端无网安装指南(离线安装Dity-0.15.3)_离线安装dify-CSDN博客
非常感谢前人们哈哈哈~
在这里插入图片描述