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
涉及Nginx
、TiDB
等数据库、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