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

Win10环境使用Dockerdesktop部署Dify集成Deepseek

Win10环境借助Dockerdesktop部署Dify集成Deepseek

前言

之前笔者已经部署了基于Ollama的Deepseek:

https://lizhiyong.blog.csdn.net/article/details/145505686

安装官方指示,还可以集成很多组件拓展玩法:

https://github.com/deepseek-ai/awesome-deepseek-integration/blob/main/README_cn.md

在集成了ChatBox后:

https://lizhiyong.blog.csdn.net/article/details/145524481

再来试一下集成Dify,实现一户一码的多租户访问。

已经部署了DockerDesktop:

https://lizhiyong.blog.csdn.net/article/details/145580868

和一个open webui:

https://lizhiyong.blog.csdn.net/article/details/145582453

现在可以尝试下更复杂的玩法。。。

部署

参考官方文档:

https://docs.dify.ai/getting-started/install-self-hosted/docker-compose

官方给出的quick-start方法是使用docker-compose方式部署。查看其它部署方式,可以发现Dify依赖的组件很多:

https://docs.dify.ai/getting-started/install-self-hosted/local-source-code

要部署python的后端及npm部署前端。可以配置的参数很多,还可以集成很多组件:

https://docs.dify.ai/getting-started/install-self-hosted/environments

涉及NginxTiDB等数据库、redis缓存。。。折腾起来还是比较麻烦的。笔者为了更快捷体验,当然是选择Docker方式。

下载源码

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

新机器没有安装git就http方式下载解压,也是一样的。

Docker-compose版本确认

PS C:\Users\zhiyong> docker compose version
Docker Compose version v2.31.0-desktop.2
PS C:\Users\zhiyong>

可以看到DockerDesktop自带了新版本的Compose,可以直接编排容器了。。。什么时候可以有个Windows环境的K8S界面端就好了。。。

准备配置文件.env

接着准备配置文件,当然不能让Docker容器的服务霸占掉宝贵的80端口,否则后续对外暴露租给别人使用会徒增很多不便。。。

复制一个,然后修改配置:

EXPOSE_NGINX_PORT=3010

就会覆盖掉docker-compose.yaml的:

  EXPOSE_NGINX_PORT: ${EXPOSE_NGINX_PORT:-80}
  nginx:
    image: nginx:latest
    restart: always
    ports:
      - '${EXPOSE_NGINX_PORT:-80}:${NGINX_PORT:-80}'
      - '${EXPOSE_NGINX_SSL_PORT:-443}:${NGINX_SSL_PORT:-443}'

默认80端口,从而可以使用3010端口访问!!!

拉起容器

PS E:\> cd E:\dockerData\volume\dify\dify-main\docker
PS E:\dockerData\volume\dify\dify-main\docker> ls


    目录: E:\dockerData\volume\dify\dify-main\docker


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----        2025-02-12     18:04                couchbase-server
d-----        2025-02-12     18:04                nginx
d-----        2025-02-12     18:04                ssrf_proxy
d-----        2025-02-12     18:04                startupscripts
d-----        2025-02-12     18:04                tidb
d-----        2025-02-12     18:04                volumes
-a----        2025-02-12     18:04          31233 .env
------        2025-02-12     18:04          31233 .env.example
------        2025-02-12     18:04          20247 docker-compose-template.yaml
------        2025-02-12     18:04           5057 docker-compose.middleware.yaml
------        2025-02-12     18:04          63694 docker-compose.png
------        2025-02-12     18:04          42595 docker-compose.yaml
------        2025-02-12     18:04           4097 generate_docker_compose
------        2025-02-12     18:04           3057 middleware.env.example
------        2025-02-12     18:04           6605 README.md


PS E:\dockerData\volume\dify\dify-main\docker> docker compose ps
NAME      IMAGE     COMMAND   SERVICE   CREATED   STATUS    PORTS
PS E:\dockerData\volume\dify\dify-main\docker> docker compose up -d
[+] Running 74/9
 ✔ weaviate Pulled                                                      109.8s 
 ✔ sandbox Pulled                                                       125.1s 
 ✔ db Pulled                                                             72.9s 
 ✔ web Pulled                                                            94.0s 
 ✔ ssrf_proxy Pulled                                                    204.3s 
 ✔ api Pulled                                                           370.2s 
 ✔ redis Pulled                                                         101.6s 
 ✔ worker Pulled                                                        370.2s 
 ✔ nginx Pulled                                                         130.3s 
[+] Running 11/11
 ✔ Network docker_default             Created                             0.1s 
 ✔ Network docker_ssrf_proxy_network  Created                             0.1s 
 ✔ Container docker-redis-1           Started                             4.1s 
 ✔ Container docker-weaviate-1        Started                             4.1s 
 ✔ Container docker-web-1             Started                             4.3s 
 ✔ Container docker-db-1              Started                             4.3s 
 ✔ Container docker-sandbox-1         Started                             4.1s 
 ✔ Container docker-ssrf_proxy-1      Started                             4.3s 
 ✔ Container docker-worker-1          Started                             3.1s 
 ✔ Container docker-api-1             Started                             3.1s 
 ✔ Container docker-nginx-1           Started                             3.7s 
PS E:\dockerData\volume\dify\dify-main\docker>

此时自动下载了相关的镜像:

在这里插入图片描述

并且拉起了一组容器:

在这里插入图片描述

但是这组容器叫docker就很魔幻。。。好在一次成功,可以直接打开:

http://localhost:3010/install

集成DeepSeek

参考官网:

https://docs.dify.ai/development/models-integration/ollama

在这里插入图片描述

从右上角设置添加Ollama部署过的DeepSeek模型。由于是容器内部部署的,需要使用Docker的网关地址:

http://host.docker.internal:11434

配置聊天机器人

在这里插入图片描述

创建一个空白应用:

在这里插入图片描述

然后右上角发布、更新、运行素质三联:

在这里插入图片描述

失效信息不用管,由于改了网页的端口,可能部分接口失效了,但是Docker内部网关和外部Ollama是通畅的。在运行中修改端口后:

在这里插入图片描述

即可正常使用本地部署的DeepSeek负载。

一户一码访问API

在访问API中,修改端口号:

http://localhost:3010/app/2eff5e09-b8fd-4758-be4c-9e905b051dce/develop

在这里插入图片描述

给出了如何使用接口访问。在右上角设置密钥后,就可以测试接口:

在这里插入图片描述

请求报文:

{
    "inputs": {},
    "query": "虎鲸是鱼吗?",
    "mode": "chat",
    "conversation_id": "",
    "user": "admin"
}

响应报文:

{
    "event": "message",
    "task_id": "11a5d6a9-8e77-4986-9e2e-4b9aeb15a3f9",
    "id": "bab60527-134d-4247-89fd-e9a27d1f1c25",
    "message_id": "bab60527-134d-4247-89fd-e9a27d1f1c25",
    "conversation_id": "5082a97d-6bba-4312-840e-efe9e39bf8af",
    "mode": "chat",
    "answer": "<think>\n嗯,用户问:“虎鲸是鱼吗?”这个问题看起来好像简单,但其实可能涉及到一些知识。首先,我知道虎鲸是一种大型海洋动物,它们经常在电影和纪录片中出现,比如《海豚湾》里的那些。但是,我不是很确定它们是否属于鱼类。\n\n让我先想想,鱼的定义是什么呢?一般来说,鱼是指用鳃呼吸、生活在水中的脊椎动物,通常有鳞片覆盖身体,没有四肢。而虎鲸有没有这些特征呢?首先,虎鲸确实在水中生活,但它们不是用鳃而是用肺呼吸,这意味着它们需要定期浮出水面换气。这一点就和鱼类不同。\n\n接下来,虎鲸的外形看起来像鱼,但是它们的身体结构和鱼类有所不同。鱼类通常有鳍状的四肢,而虎鲸则更像是哺乳动物,拥有更像四足动物的身体结构,比如胸鳍和背鳍等。此外,虎鲸的生殖方式也是胎生,母亲通过乳房喂养幼崽,这与卵生的鱼类完全不同。\n\n我还记得之前看过一些资料,提到虎鲸属于齿鲸科,是一种海洋哺乳动物,而不是鱼。它们和其他鲸类一样,需要呼吸空气,并且具有高度发达的大脑,展现出复杂的社交行为和捕猎技巧。这些特征都更符合哺乳动物的定义,而不仅仅是鱼类。\n\n不过,有时候人们可能会把鲸鱼误认为是鱼,因为它们体型庞大,生活在水中。但事实上,鲸鱼、海豚和鼠海豚等都是属于哺乳纲的,虽然它们的生活环境与其他陆地哺乳动物不同,但在生物分类上,它们与我们更接近。\n\n再想想,鱼类的进化路径和哺乳动物有所不同。鱼类起源于古生代,而哺乳动物则是在中生代之后逐渐发展起来的。虎鲸作为哺乳动物的一员,与鱼在进化上有很大的区别。此外,从生理结构上看,鱼类的心脏是两腔心,而哺乳动物的心脏是三腔心,这进一步证明了它们的不同。\n\n总结一下,尽管虎鲸看起来像鱼,并且生活在水中,但它们实际上是海洋中的哺乳动物,属于鲸类。因此,严格来说,虎鲸不是鱼,而是哺乳动物。\n</think>\n\n虎鲸并不是鱼,而是海洋中的哺乳动物。尽管它们在外观上与鱼类相似,但由于其用肺呼吸、胎生以及复杂的社交行为等特征,虎鲸被归类为鲸类,属于哺乳纲。",
    "metadata": {
        "usage": {
            "prompt_tokens": 9,
            "prompt_unit_price": "0",
            "prompt_price_unit": "0",
            "prompt_price": "0E-7",
            "completion_tokens": 514,
            "completion_unit_price": "0",
            "completion_price_unit": "0",
            "completion_price": "0E-7",
            "total_tokens": 523,
            "total_price": "0E-7",
            "currency": "USD",
            "latency": 29.452981514001294
        }
    },
    "created_at": 1739376060
}

这样就做到了基于多租户的一户一码!!!

在这里插入图片描述

可以看到丽台A4000显卡的Token生成速度只有18.863/s,灰常慢!!!

后续再开发一个用户管理模块和计费模块,就可以在内网租给别人使用了!!!对公网暴露服务就可以牟利。。。

甚至还可以搞更多特训AI提供更加优质的服务!!!

这就是云服务厂商的本质,还是在出租GPU算力。。。但是生产可就要自己用代码/K8S部署来提升性能了。。。

转载请注明出处:https://lizhiyong.blog.csdn.net/article/details/145602366

在这里插入图片描述


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

相关文章:

  • 新数据结构(9)——Java异常体系
  • 小米CyberGear电机 STM32软件修改CAN_ID
  • 基于Flask的软科中国大学排名数据可视化分析系统的设计与实现
  • github与git bash绑定问题
  • 【面试】面试常见的智力题
  • el-select 设置宽度 没效果
  • 无人机生态环境监测、图像处理与GIS数据分析综合实践技术应用
  • 【Redis存在线程安全问题吗?】
  • 前沿科技一览当今创新技术趋势
  • 硬件学习笔记--41 电磁兼容试验-5 射频场感应的传导干扰试验介绍
  • MongoDB 的批量查找符号
  • 青少年编程与数学 02-009 Django 5 Web 编程 11课题、模板系统
  • MySQL 2025 January GA Releases 都发布了啥功能[译]
  • IPoIB模块初始化过程详解
  • HCIA项目实践---OSPF的知识和原理总结
  • 【后端开发】面试题-redis
  • 3.【线性代数】——矩阵乘法和逆矩阵
  • 迅投QMT程序化交易系统-行情和交易服务器连接、中断和再连接
  • Github访问不了解决方案(Mac)
  • leetcode 2684. 矩阵中移动的最大次数