Docker+Ollama+WebUI+AnythingLLM,构建企业本地AI大模型

weixin_44585288 2024-06-29 08:31:07 阅读 90

文章目录

概要Ollama部署WebUI部署AnythingLLM部署Docker-Compose部署管理所有容器小结参考文章

概要

Ollama 是一个强大的大模型提供者,它通过开源的方式,为开发者和企业提供了先进的大型语言模型(LLM)。这些模型拥有处理和生成复杂语言任务的能力,为各种应用场景提供了强大的基础。

Open WebUI 则进一步增强了用户体验,它提供了一个高度可视化和用户友好的对话界面。这个界面不仅美观,而且功能丰富,使用户能够轻松地与背后的大模型进行交互,无论是通过文本聊天还是其他交互方式。

AnythingLLM 则是在这个基础上的一个创新工具,它允许用户利用 Ollama 提供的大模型能力,并结合本地数据,构建和定制符合个人或企业特定需求的 AI 大模型。AnythingLLM 的灵活性和定制性意味着用户可以根据自己的特定业务场景和需求,创建和优化 AI 解决方案,从而在保证数据安全和隐私的同时,实现更加个性化和高效的服务。

通过 AnythingLLM,用户可以轻松地将本地文档、资料和数据集成到 AI 模型中,实现智能检索、内容生成、问答系统等多样化功能。这不仅提高了工作效率,还增强了决策支持的能力。AnythingLLM 的多用户支持和精细的权限管理,使得团队协作变得更加简单和安全。

总的来说,Ollama、Open WebUI 和 AnythingLLM 的结合,为用户提供了一个从模型提供到界面交互,再到个性化定制的完整解决方案,使得构建和部署 AI 大模型变得更加容易、高效和安全。

Ollama部署

获取Ollama镜像:

使用Docker从镜像仓库拉取Ollama镜像:

docker pull ollama/ollama

创建Ollama宿主机挂载目录:

在宿主机上创建一个目录用于Ollama数据的持久化存储:

mkdir -p /data/docker/ollama/data

修改目录权限

chmod -R 777 /data/docker/ollama

启动Ollama容器

使用以下命令启动Ollama容器,并将数据目录挂载到容器中:

docker run \

-d \

--restart always \

--name ollama \

--privileged=true \

-p 11434:11434 \

-v /data/docker/ollama/data:/root/.ollama \

ollama/ollama

其中:

-d 表示后台运行容器。--restart always 设置容器的重启策略。--name ollama 为容器指定一个名称。--privileged=true 使容器以特权模式运行,这将给予容器几乎相同于宿主机的权限。 -p 11434:11434 \ 将容器的11434端口映射到宿主机的11434端口。 -v /data/docker/ollama/data:/root/.ollama 将宿主机的数据目录挂载到容器中。ollama/ollama 指定要使用的ollama镜像和版本(latest)。

测试Ollama服务:

进入Ollama容器:

docker exec -it ollama /bin/bash

从Ollama仓库拉取gemma模型, 可从官网查看有哪些模型

ollama pull gemma:2b

查看本地有哪些模型

ollma list

使用gemma:2b大模型, 然后与开启对话

ollama run gemma:2b

WebUI部署

获取open-webui镜像:

使用Docker从镜像仓库拉取open-webui镜像:

docker pull m.daocloud.io/ghcr.io/open-webui/open-webui:main

创建open-webui宿主机挂载目录:

在宿主机上创建一个目录用于open-webui数据的持久化存储:

mkdir -p /data/docker/open-webui/data

修改目录权限

chmod -R 777 /data/docker/open-webui

启动AnythingLLM容器

使用以下命令启动open-webui容器,并将数据目录挂载到容器中:

docker run \

-d \

--restart always \

--name open-webui \

--privileged=true \

-p 3000:8080 \

-e OLLAMA_BASE_URL="http://{ollma服务IP}:11434"

-v /data/docker/open-webui/data:/app/backend/data \

m.daocloud.io/ghcr.io/open-webui/open-webui:main

其中:

-d 表示后台运行容器。--restart always 设置容器的重启策略。--name open-webui 为容器指定一个名称。--privileged=true 使容器以特权模式运行,这将给予容器几乎相同于宿主机的权限。-p 3000:8080 \ 将容器的3000端口映射到宿主机的8080端口。 -v /data/docker/open-webui/data:/app/backend/data 将宿主机的数据目录挂载到容器中。 m.daocloud.io/ghcr.io/open-webui/open-webui:main 指定要使用的open-webui镜像

测试open-webui服务:

通过浏览器输入http://{宿主机IP}:3000/auth即可开始访问

AnythingLLM部署

获取AnythingLLM镜像:

使用Docker从镜像仓库拉取AnythingLLM镜像:

docker pull mintplexlabs/anythingllm

创建AnythingLLM宿主机挂载目录:

在宿主机上创建一个目录用于AnythingLLM数据的持久化存储:

mkdir -p /data/docker/anythingllm/data

在宿主机上创建一个目录用于存放AnythingLLM的环境变量信息

mkdir -p /data/docker/anythingllm/env

修改目录权限

chmod -R 777 /data/docker/anythingllm

创建环境变量文件

创建配置文件env.txt

cd /data/docker/anythingllm/env

touch env.txt

增加环境变量信息

SERVER_PORT=3001

STORAGE_DIR="/app/server/storage"

UID='1000'

GID='1000'

启动AnythingLLM容器

使用以下命令启动AnythingLLM容器,并将数据目录挂载到容器中:

docker run \

-d \

--restart always \

--name anythingllm \

--cap-add SYS_ADMIN \

--privileged=true \

-p 3014:3001 \

-v /data/docker/anythingllm/data:/app/server/storage \

-v /data/docker/anythingllm/env/env.txt:/app/server/.env \

mintplexlabs/anythingllm

其中:

-d 表示后台运行容器。--restart always 设置容器的重启策略。--name anythingllm 为容器指定一个名称。--cap-add SYS_ADMIN 添加SYS_ADMIN能力给容器,这意味着容器将获得更多的系统管理权限,比如进行磁盘管理、网络配置等--privileged=true 使容器以特权模式运行,这将给予容器几乎相同于宿主机的权限。 -p 3014:3001 \ 将容器的3014端口映射到宿主机的3001端口。 -v /data/docker/anythingllm/data:/app/server/storage 将宿主机的数据目录挂载到容器中。/data/docker/anythingllm/env/env.txt:/app/server/.env 将宿主机的配置文件挂载到容器中。 mintplexlabs/anythingllm 指定要使用的AnythingLLM镜像和版本(latest)。

测试AnythingLLM服务:

通过浏览器输入http://{宿主机IP}:3041即可开始访问

Docker-Compose部署管理所有容器

将上面的docker run命令转换为docker-compose.yml文件,并设置open-webui和anythingllm服务依赖于ollama服务,方便管理

version: '3.8'

services:

ollama:

image: ollama/ollama

container_name: ollama

restart: always

privileged: true

ports:

- "11434:11434"

volumes:

- /data/docker/ollama/data:/root/.ollama

networks:

- llm_network

open-webui:

image: m.daocloud.io/ghcr.io/open-webui/open-webui:main

container_name: open-webui

restart: always

privileged: true

ports:

- "3000:8080"

environment:

OLLAMA_BASE_URL: "http://ollama:11434"

volumes:

- /data/docker/open-webui/data:/app/backend/data

depends_on:

- ollama

networks:

- llm_network

anythingllm:

image: mintplexlabs/anythingllm

container_name: anythingllm

restart: always

cap_add:

- SYS_ADMIN

privileged: true

ports:

- "3014:3001"

volumes:

- /data/docker/anythingllm/data:/app/server/storage

- /data/docker/anythingllm/env/env.txt:/app/server/.env

depends_on:

- ollama

networks:

- llm_network

networks:

llm_network:

driver: bridge

这个docker-compose.yml文件中定义了三个服务:ollamaopen-webuianythingllm。每个服务都有自己的配置,包括镜像、容器名称、重启策略、特权模式、端口映射和卷挂载。

environment: 用于设置环境变量,这里open-webui服务设置了OLLAMA_BASE_URL环境变量,指向ollama服务。depends_on: 此选项用于指定服务依赖,确保open-webuianythingllm服务在ollama服务启动后再启动。

请确保将/data/docker/...路径替换为实际的宿主机路径,或者根据需要创建这些目录。

要使用此docker-compose.yml文件启动服务,你需要在包含该文件的目录中打开终端,然后运行:

docker-compose up -d

这将按照文件中定义的配置启动所有服务。如果你想停止服务,可以使用:

docker-compose down

这将停止并移除容器,但不会删除卷。如果你需要重新构建服务或者对配置进行了更改,可以使用:

docker-compose up --build

这将重建任何已更改的服务的镜像。

小结

参考文章

ollam官网



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。