Dify开源大语言模型(LLM) 应用开发平台如何使用Docker部署与远程访问

本文主要是介绍Dify开源大语言模型(LLM) 应用开发平台如何使用Docker部署与远程访问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

    • 1. Docker部署Dify
    • 2. 本地访问Dify
    • 3. Ubuntu安装Cpolar
    • 4. 配置公网地址
    • 5. 远程访问
    • 6. 固定Cpolar公网地址
    • 7. 固定地址访问

本文主要介绍如何在Linux Ubuntu系统以Docker的方式快速部署Dify,并结合cpolar内网穿透工具实现公网远程访问本地Dify!

Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。即使你是非技术人员,也能参与到 AI 应用的定义和数据运营过程中。

Dify 是开源的,且支持自部署到本地自己服务器上,打造自己的AI系统应用,由于本地部署后,本地部署限制只能在本地访问,无法实现共享给他人访问,或者自己远程访问,这个时候,要么需要自己有云服务器,或者公网IP,否则无法进行远程访问,但是,如果既没有云服务器和公网IP,我们也想要实现远程访问呢,那么下面介绍一个内网穿透工具,让我们无公网IP无云服务器也可以实现远程访问本地Dify.

Cpolar是一款强大的内网穿透软件,它能够在多个操作系统上无缝运行,包括Windows、MacOS和Linux,因此无论您使用哪种操作系统,都可以轻松将本地内网服务器的HTTP、HTTPS、TCP协议端口映射为公网地址端口,使得公网用户可以轻松访问您的内网服务,无需部署至公网服务器.

本例采用Docker部署,首先设备需要提前安装好Docker 和Docker compos,如没有安装,可以参考docker 官方教程进行安装:Docker 官方安装教程

1. Docker部署Dify

根据官方部署文档,我们克隆官方的docker 文件进行部署,首先进入到local 目录下,执行cd /usr/local,然后执行下面命令克隆下来

sudo git clone https://github.com/langgenius/dify.git

等待拉取完成后,可以看到有个dify文件夹,表示成功拉取下来了

image-20240402123640693

然后我们进入dify文件夹里的docker目录

cd /dify/docker

然后执行docker命令部署运行dify,执行后等待部署完成

sudo docker compose up -d

docker部署运行完成后,我们输入指令sudo docker ps即可看到运行的容器,其中在运行的容器列表可以看到有个nginx的容器,且对外访问的是80端口,这个就是我们外部访问的端口,下面我们进行本地访问测试

image-20240402124022891

2. 本地访问Dify

上面在docker中成功部署且运行后,接下来进行本地访问,上面我们查看到对外访问端口是80,现在我们在外部或者内部访问ubuntu的80端口,即可看到我们本地部署的Dify服务应用,本地访问表示成功了,首次访问需要创建账号!

image-20240402124326533

创建后我们即可成功登录到dify了,具体dify使用方法可以参考dify官方文档.本地访问成功后,下面设置远程也可以访问,下面首先安装cpolar内网穿透工具

image-20240402124451695

3. Ubuntu安装Cpolar

上面在本地Docker中成功部署了Dify服务,并局域网访问成功,下面我们在Linux安装Cpolar内网穿透工具,通过Cpolar 转发本地端口映射的http公网地址,我们可以很容易实现远程访问,而无需自己注册域名购买云服务器.下面是安装cpolar步骤

cpolar官网地址: https://www.cpolar.com

  • 使用一键脚本安装命令
curl -L https://www.cpolar.com/static/downloads/install-release-cpolar.sh | sudo bash
  • 安装完成后,可以通过如下方式来操作cpolar服务,首先执行加入系统服务设置开机启动,然后再启动服务
# 加入系统服务设置开机启动
sudo systemctl enable cpolar# 启动cpolar服务
sudo systemctl start cpolar# 重启cpolar服务
sudo systemctl restart cpolar# 查看cpolar服务状态
sudo systemctl status cpolar# 停止cpolar服务
sudo systemctl stop cpolar

Cpolar安装和成功启动服务后,内部或外部浏览器上通过局域网IP加9200端口即:【http://192.168.xxx.xxx:9200】访问Cpolar管理界面,使用Cpolar官网注册的账号登录,登录后即可看到cpolar web 配置界面,接下来在web 界面配置即可

image-20240220142041422

4. 配置公网地址

点击左侧仪表盘的隧道管理——创建隧道,创建一个dify的公网http地址隧道!

  • 隧道名称:可自定义命名,注意不要与已有的隧道名称重复
  • 协议:选择http
  • 本地地址:80 (docker部署后对外访问的端口)
  • 域名类型:免费选择随机域名
  • 地区:选择China

点击创建

image-20240402125057790

隧道创建成功后,点击左侧的状态——在线隧道列表,查看所生成的公网访问地址,有两种访问方式,一种是http 和https,两种都可以访问,下面选择其中一种进行远程访问

image-20240402125148467

5. 远程访问

使用上面Cpolar生成的 https公网地址,在任意设备的浏览器进行访问,即可成功看到我们dify的界面,极大的缩小了云服务器那些繁琐的配置,简单几步即可实现无需云服务器,无需公网IP实现远程访问.

image-20240402125353756

小结

为了更好地演示,我们在前述过程中使用了cpolar生成的隧道,其公网地址是随机生成的。

这种随机地址的优势在于建立速度快,可以立即使用。然而,它的缺点是网址由随机字符生成,不太容易记忆(例如:3ad5da5.r10.cpolar.top)。另外,这个地址在24小时内会发生随机变化,更适合于临时使用。

我一般会使用固定二级子域名,原因是我希望将网址发送给同事或客户时,它是一个固定、易记的公网地址(例如:dify.cpolar.cn),这样更显正式,便于流交协作。

6. 固定Cpolar公网地址

由于以上使用cpolar所创建的隧道使用的是随机公网地址,24小时内会随机变化,不利于长期远程访问。因此我们可以为其配置二级子域名,该地址为固定地址,不会随机变化【ps:cpolar.cn已备案】

注意需要将cpolar套餐升级至基础套餐或以上,且每个套餐对应的带宽不一样。【cpolar.cn已备案】

登录cpolar官网,点击左侧的预留,选择保留二级子域名,设置一个二级子域名名称,点击保留,保留成功后复制保留的二级子域名名称

image-20240402125524133

保留成功后复制保留成功的二级子域名的名称

image-20240402125550749

返回登录cpolar web UI管理界面,点击左侧仪表盘的隧道管理——隧道列表,找到所要配置的隧道,点击右侧的编辑

image-20240402125615192

修改隧道信息,将保留成功的二级子域名配置到隧道中

  • 域名类型:选择二级子域名
  • Sub Domain:填写保留成功的二级子域名

点击更新(注意,点击一次更新即可,不需要重复提交)

image-20240402125642716

更新完成后,打开在线隧道列表,此时可以看到公网地址已经发生变化,地址二级名称变成了我们自己设置的二级子域名名称

image-20240402125726835

7. 固定地址访问

最后,我们使用固定的公网https地址访问,可以看到同样访问成功,这样一个固定且永久不变的公网地址就设置好了,随时随地都可以在公网环境远程访问本地dify服务,无需公网IP,无需云服务器!

image-20240402125808004

这篇关于Dify开源大语言模型(LLM) 应用开发平台如何使用Docker部署与远程访问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/887355

相关文章

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python并行处理实战之如何使用ProcessPoolExecutor加速计算

《Python并行处理实战之如何使用ProcessPoolExecutor加速计算》Python提供了多种并行处理的方式,其中concurrent.futures模块的ProcessPoolExecu... 目录简介完整代码示例代码解释1. 导入必要的模块2. 定义处理函数3. 主函数4. 生成数字列表5.

Python中help()和dir()函数的使用

《Python中help()和dir()函数的使用》我们经常需要查看某个对象(如模块、类、函数等)的属性和方法,Python提供了两个内置函数help()和dir(),它们可以帮助我们快速了解代... 目录1. 引言2. help() 函数2.1 作用2.2 使用方法2.3 示例(1) 查看内置函数的帮助(

Linux脚本(shell)的使用方式

《Linux脚本(shell)的使用方式》:本文主要介绍Linux脚本(shell)的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录概述语法详解数学运算表达式Shell变量变量分类环境变量Shell内部变量自定义变量:定义、赋值自定义变量:引用、修改、删

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

Java使用HttpClient实现图片下载与本地保存功能

《Java使用HttpClient实现图片下载与本地保存功能》在当今数字化时代,网络资源的获取与处理已成为软件开发中的常见需求,其中,图片作为网络上最常见的资源之一,其下载与保存功能在许多应用场景中都... 目录引言一、Apache HttpClient简介二、技术栈与环境准备三、实现图片下载与保存功能1.

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

LiteFlow轻量级工作流引擎使用示例详解

《LiteFlow轻量级工作流引擎使用示例详解》:本文主要介绍LiteFlow是一个灵活、简洁且轻量的工作流引擎,适合用于中小型项目和微服务架构中的流程编排,本文给大家介绍LiteFlow轻量级工... 目录1. LiteFlow 主要特点2. 工作流定义方式3. LiteFlow 流程示例4. LiteF

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

使用jenv工具管理多个JDK版本的方法步骤

《使用jenv工具管理多个JDK版本的方法步骤》jenv是一个开源的Java环境管理工具,旨在帮助开发者在同一台机器上轻松管理和切换多个Java版本,:本文主要介绍使用jenv工具管理多个JD... 目录一、jenv到底是干啥的?二、jenv的核心功能(一)管理多个Java版本(二)支持插件扩展(三)环境隔