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

AnythingLLM 的 Docker 使用

AnythingLLM是使用大语言模型LLM的一站式简便框架。官网的介绍如下:

AnythingLLM is the easiest to use, all-in-one AI application that can do RAG, AI Agents, and much more with no code or infrastructure headaches.

1. 使用官方docker

      最方便的方法是使用 docker. 参考Local Docker Installation ~ AnythingLLM

1.1 拉取镜像

  docker pull mintplexlabs/anythingllm

1.2 创建db目录和配置文件

Linux:

export STORAGE_LOCATION=/var/lib/anythingllm && \
mkdir -p $STORAGE_LOCATION && \
touch "$STORAGE_LOCATION/.env"

Windows:

$env:STORAGE_LOCATION="$HOME\Documents\anythingllm"; `
If(!(Test-Path $env:STORAGE_LOCATION)) {New-Item $env:STORAGE_LOCATION -ItemType Directory}; `
If(!(Test-Path "$env:STORAGE_LOCATION\.env")) {New-Item "$env:STORAGE_LOCATION\.env" -ItemType File}; 

1.3 运行docker

docker run -d \--name anythingllm \--add-host=host.docker.internal:host-gateway \--env STORAGE_DIR=/app/server/storage \--health-cmd "/bin/bash /usr/local/bin/docker-healthcheck.sh || exit 1" \--health-interval 60s \--health-start-period 60s \--health-timeout 10s \-p 3001:3001/tcp \--restart=always \--user anythingllm \-v ${STORAGE_LOCATION}:/app/server/storage \-v ${STORAGE_LOCATION}/.env:/app/server/.env \-w /app \mintplexlabs/anythingllm

    --add-host 配置是为了访问同台机器上的ollama服务。

1.4 访问 http://localhost:3001 进行初始配置,最好配置团队,可以进行权限控制

       可以配置大语言模型LLM、向量模型、向量数据库等等。

       完成后查看 .env 文件,如下(因人而异):

SERVER_PORT=3001
JWT_SECRET="my-random-string-for-seeding" # Please generate random string at least 12 chars long.
STORAGE_DIR="/var/lib/anything"
OPEN_AI_KEY=""LLM_PROVIDER='ollama'
OLLAMA_BASE_PATH='http://localhost:11434'
OLLAMA_MODEL_PREF='llama3-64k:latest'
OLLAMA_MODEL_TOKEN_LIMIT='4096'EMBEDDING_ENGINE='native'
VECTOR_DB='lancedb'

1.5 访问api

       http://localhost:3001/api/docs/可以查看已有的API接口。

       在设置里生成APIKEY,客户端编程通过这个Key来访问接口。      

1.6 一个好用的小工具get_command_4_run_container,查看运行容器的启动命令参数

docker pull cucker/get_command_4_run_container
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock cucker/get_command_4_run_container [容器名称]/[容器ID]

2. 生成自己的docker镜像

     如果想要有更多的自主和控制,比如加一些api接口。

2.1 下载代码

git clone https://github.com/Mintplex-Labs/anything-llm.git

2.2 Windows下生成镜像

     进入代码目录anything-llm, 执行命令

docker build -f ./docker/Dockerfile -t anythingllm:my_1.0 .

    如果中间超时报错了可以多跑几次,因为会访问github下载一些依赖的东西,而我们访问github是不稳定的, 如果你有代理服务就最好了。

2.3 Ubuntu下生成镜像

      这里遇到不少问题,开始不管是用docker build还是docker-compose build都报错。

      后来研究./docker/Dockerfile 文件才发现,它是支持多平台编译的。

      为什么在Windows下没有问题呢,原因是我Windows下用的是Docker Desktop,而它自带buildx工具,会自动识别当前系统平台。

2.3.1 安装工具buildx

下载:

export BUILDX_VERSION=$(curl -s https://api.github.com/repos/docker/buildx/releases/latest | grep -oP '"tag_name": "\K(.*)(?=")')
curl -LO https://github.com/docker/buildx/releases/download/${BUILDX_VERSION}/buildx-${BUILDX_VERSION}.linux-amd64

 安装:

mkdir -p ~/.docker/cli-plugins
mv buildx-${BUILDX_VERSION}.linux-amd64 ~/.docker/cli-plugins/docker-buildx
chmod +x ~/.docker/cli-plugins/docker-buildx

查看版本号:

docker buildx version

使用,这个工具也是个docker:

docker buildx create --use
docker buildx inspect --bootstrap

 2.3.2 生成镜像,使用buildx指定platform

docker buildx build --platform linux/amd64 --build-arg ARG_UID=1000 --build-arg ARG_GID=1000 -f ./docker/Dockerfile  -t anythingllm:my_1.0 --load --output type=docker .

2.3.3 启动命令和上面的类似

a. 创建本地store目录   

mkdir /var/lib/anythingllm-my

b. 创建db和env配置文件

cd /var/lib/anythingllm-my
mkdir logs
touch anythingllm.db
touch .env
chown 1000:1000 /var/lib/anythingllm-my/ -R

       这里要注意的是一定要给目录/var/lib/anythingllm-my修改owner(最后一条命令),不然docker启动会失败,报写readonly db的错误。

c.  启动docker,不建议用docker-compose,

export STORAGE_LOCATION=/var/lib/anythingllm-my &&
docker run -d \--name anythingllm-my \--add-host=host.docker.internal:host-gateway \--env STORAGE_DIR=/app/server/storage \-p 3001:3001/tcp \--restart=always \--user anythingllm \-v ${STORAGE_LOCATION}:/app/server/storage \-v ${STORAGE_LOCATION}/.env:/app/server/.env \-v ${STORAGE_LOCATION}/logs:/app/server/logs/ \-w /app \anythingllm:my_1.0

     修改了文件./docker/docker-entrypoint.sh如下,增加了输出服务端log:

#!/bin/bash
{cd /app/server/ &&npx prisma generate --schema=./prisma/schema.prisma &&npx prisma migrate deploy --schema=./prisma/schema.prisma &&node /app/server/index.js &> /app/server/logs/server.log
} &
{ node /app/collector/index.js; } &
wait -n
exit $?

3. 结束

    有了自己的镜像,后面你可以自主修改代码了!!   

相关文章:

  • mysql (事物)
  • java计算年化利率
  • 智能合约漏洞类型
  • MySQL之查询性能优化(十一)
  • ffmpeg实现视频播放 ----------- Javacv
  • WebGL开发时尚设计系统
  • 一文讲清:生产报工系统的功能、报价以及如何选择
  • zerotier自建moon方法
  • Less的简单总结
  • bugku---misc---ping
  • 第十五届蓝桥杯大赛 国赛 pb组F题【括号与字母】(15分) 栈的应用
  • Accelerate之大模型显存计算
  • 防止连续点击按钮,多次调用接口
  • 俄语演讲开场白,柯桥外贸俄语培训
  • 提升易用性,OceanBase生态管控产品的“从小到大”
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Angular 2 DI - IoC DI - 1
  • angular2开源库收集
  • happypack两次报错的问题
  • Java程序员幽默爆笑锦集
  • java多线程
  • JS专题之继承
  • Linux快速复制或删除大量小文件
  • mysql常用命令汇总
  • October CMS - 快速入门 9 Images And Galleries
  • vuex 学习笔记 01
  • 排序算法学习笔记
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 算法---两个栈实现一个队列
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 新手搭建网站的主要流程
  • 移动端唤起键盘时取消position:fixed定位
  • 终端用户监控:真实用户监控还是模拟监控?
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • ​secrets --- 生成管理密码的安全随机数​
  • #NOIP 2014# day.1 T2 联合权值
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (zt)最盛行的警世狂言(爆笑)
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • (第30天)二叉树阶段总结
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)springboot金融新闻信息服务系统 毕业设计651450
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
  • (强烈推荐)移动端音视频从零到上手(下)
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (转)VC++中ondraw在什么时候调用的
  • (转载)深入super,看Python如何解决钻石继承难题
  • (自用)learnOpenGL学习总结-高级OpenGL-抗锯齿
  • .chm格式文件如何阅读
  • .NET Core 版本不支持的问题
  • .netcore 如何获取系统中所有session_如何把百度推广中获取的线索(基木鱼,电话,百度商桥等)同步到企业微信或者企业CRM等企业营销系统中...
  • .NET大文件上传知识整理
  • ;号自动换行
  • [4.9福建四校联考]