Docker私有化部署Dify

发布时间:2024-11-08 人气:147次

  Docker私有化部署Dify


  云服务和私有化部署


  使用Dify的云服务版,云服务版就是在Dify官网(https://dify.ai/zh)编排应用。


  很多小伙伴身处金融、政府这样对数据高度敏感的行业,直接使用云服务不符合他们的需求。数据安全性是他们最为看重的,于是私有化部署应运而生。Dify当然也提供私有化部署的方式,顾名思义,私有化部署是指在自己的服务器或者桌面电脑上部署Dify。


  Dify提供两种私有化部署的方式:


  DockerCompose部署


  源码启动


  我们推荐DockerCompose部署的方式,DockerCompose部署方式快速、简单,几行命令就能搞定。


  源码启动步骤相对繁琐,不推荐。


  什么是Docker?


  我先跟你讲一个场景,原先没有Docker的时候,我们想要在服务器上部署一个JavaWeb应用,除了Jar包本身,还需要在服务器上安装JDK、MySQL、Redis、Nginx等,然后配置好各种配置文件,最后启动Jar包。如果你是部署1台服务器还不算麻烦,那如果部署100台服务器呢?并且如果服务器的Linux版本不一样,或者JDK版本不一样,你的JavaWeb应用部署在A服务器上可以运行,也许部署在B服务器上就会报错。这些问题是不是很头疼?于是Docker应运而生。有了Docker之后,你只需要创建一个包含JavaWeb应用程序、JDK、MySQL、Redis、Nginx等的容器镜像,并将其部署到任何支持Docker的环境中,无需担心版本冲突或环境不一致的问题。Docker就是一个包含了所有依赖的容器,我的理解就是他是一个小型系统,不受系统环境限制,可以独立运行。


  安装Docker


  Mac和Windows


  在Mac和Windows上安装Docker非常简单,只需要到Docker官网下载DockerDesktop,双击安装即可。


  官网下载docker.png

        本站是docker官方中国独家代理,如需购买docker软件请联系本站客服。


  DockerDesktop安装完成打开后的界面如下:


  Docker Desktop安装完成后打开界面.png


  可以在设置打开Docker开机自启动。


  我们在Mac终端执行命令docker--version查看Docker版本:


  Docker版本.jpg


  Linux服务器


  对于无桌面环境的Linux服务器,RedHat、Ubuntu、CentOS等都是参照官网安装指南进行安装,这里不作过多介绍。


  下载Dify源码


  使用gitclone命令下载Dify源码:


  gitclonehttps://github.com/langgenius/dify.git


  启动Dify


  Docker启动Dify


  进入Dify源代码的docker目录,执行一键启动命令:


  cddify/docker


  dockercomposeup-d


  如果您的系统安装了DockerComposeV2而不是V1,请使用dockercompose而不是docker-compose。通过$dockercomposeversion检查版本号:


  检查版本号.png


  部署结果


  [+]Running7/7


  ✔Containerdocker-web-1Started1.0s


  ✔Containerdocker-redis-1Started1.1s


  ✔Containerdocker-weaviate-1Started0.9s


  ✔Containerdocker-db-1Started0.0s


  ✔Containerdocker-worker-1Started0.7s


  ✔Containerdocker-api-1Started0.8s


  ✔Containerdocker-nginx-1Started


  检查容器是否正常运行


  dockercomposeps


  包括3个业务服务api/worker/web,以及4个基础组件weaviate/db/redis/nginx,都要处于启动状态。注意下面每一个服务的status都要是Up状态才算真正启动成功。


  NAMEIMAGECOMMANDSERVICECREATEDSTATUSPORTS


  docker-api-1langgenius/dify-api:0.3.2"/entrypoint.sh"api4secondsagoUp2seconds80/tcp,5001/tcp


  docker-db-1postgres:15-alpine"docker-entrypoint.s…"db4secondsagoUp2seconds0.0.0.0:5432->5432/tcp


  docker-nginx-1nginx:latest"/docker-entrypoint.…"nginx4secondsagoUp2seconds0.0.0.0:80->80/tcp


  docker-redis-1redis:6-alpine"docker-entrypoint.s…"redis4secondsagoUp3seconds6379/tcp


  docker-weaviate-1semitechnologies/weaviate:1.18.4"/bin/weaviate--hos…"weaviate4secondsagoUp3seconds


  docker-web-1langgenius/dify-web:0.3.2"/entrypoint.sh"web4secondsagoUp3seconds80/tcp,3000/tcp


  docker-worker-1langgenius/dify-api:0.3.2"/entrypoint.sh"worker4secondsagoUp2seconds80/tcp,5001/tcp


  访问Dify


  在浏览器中输入http://localhost即可访问Dify。


  升级Dify


  进入Dify源代码的docker目录,按顺序执行以下命令:


  cddify/docker


  gitpulloriginmain


  dockercomposedown


  dockercomposepull


  dockercomposeup-d


  常见问题


  Dify启动失败


  我是在Ubuntu系统中,Docker版本相对较低的情况下遇到如下问题:在浏览器中输入http://localhost访问Dify,首页正常显示,当点击设置管理员用户页面一直在加载中,如下图所示:


  Dify启动失败.png


  打开浏览器控制台,发现报错:


  /console/api/setup502


  看起来是DifyApi服务报错了,使用如下命令查看容器是否启动成功:


  dockercomposeps


  果然发现有几个服务的状态status栏并不是Up状态,而是处于Restarting状态。


  通过dockerlogsdocker-api-1命令查看DifyApi服务的日志,发现报错信息如下:


  报错信息.png


  这是由于Docker运行权限不够,需要被赋予更高的权限。


  解决方法:


  在docker-compose.yaml文件中,给services下每一个service最后一行都加上privileged:true


  解决方法.png


  然后重新启动Dify即可。


  在Ubuntu系统下,升级Dify


  由于在第一个问题中,Ubuntu系统中,本地修改了docker-compose.yaml文件,在使用gitpulloriginmain会提示本地有文件没有提交:


  error:Yourlocalchangestothefollowingfileswouldbeoverwrittenbymerge:


  docker/docker-compose.yaml


  Please,commityourchangesorstashthembeforeyoucanmerge.


  解决方法:


  gitadddocker-compose.yaml


  gitcommit-m"localchange"


  执行gitcommit时,需要配置Git的用户信息。Git需要知道提交是由谁进行的。


  这里用户名和邮箱随便写即可


  gitconfig--globaluser.email"xxx"


  gitconfig--globaluser.name"xxx"


  提交本地修改之后,再执行gitpulloriginmain,由于本地修改了docker-compose.yaml文件,此时会提示文件有冲突,需要手动解决冲突。


  vidocker-compose.yaml


  手动解决冲突后,保存docker-compose.yaml文件,然后再本地commit修改。


  gitadddocker-compose.yaml


  gitcommit-m"解决docker-compose.yaml的冲突"


  冲突解决后再按照如下步骤进行Dify升级


  cddify/docker


  gitpulloriginmain


  dockercomposedown


  dockercomposepull


  dockercomposeup-d


  升级到指定Tag版本


  cddify/docker


  dockercomposedown


  //查看当前分支


  gitbranch


  gitfetch--all


  //查看所有tag版本


  gittag


  //拉取指定分支


  gitcheckout0.6.11


  dockercomposepull


  dockercomposeup-d


  Docker无法拉取镜像


  修改Docker镜像源,寻找新的可以的Docker镜像源。


  //daemon.json可能会不存在,直接vi/etc/docker/daemon.json可以创建


  sudovi/etc/docker/daemon.json


  {


  "registry-mirrors":["新的镜像源地址"]


  }


  systemctlrestartdocker//重启docker


  dockerinfo//查看镜像源有没有配置成功


选择订阅-通过 Docker 订阅在协作、安全性和支持之间找到完美的平衡!
在线客服
联系方式

热线电话

18221674630

上班时间

周一到周五

公司电话

18221674630

二维码
线
获取免费体验资格

提交后,我们将在3个小时内与您联系