AnythingLLM 的 Docker 使用

news2024/12/23 13:44:31

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. 结束

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1814844.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AiP74LVC1T45GB236.TR SOT23-6缓冲器/驱动器双电源接口电平转换

AIP74LVC1T45GB236.TR 是一款电平转换芯片,它的应用领域非常广泛,主要包括: 1. 嵌入式系统:在嵌入式系统中,由于不同的外设可能工作在不同的电源电压下,该电平转换器可用于确保微控制器和其他逻辑电路之间的…

复制网页文字和图片到Word中-Word插件-大珩助手

问题整理: 为什么从浏览器的网页上复制文字和图片后,在Word中粘贴时图片无法显示?有没有插件可以将网页中的文字和图片复制到Office Word 中? Word大珩助手是一款功能丰富的Office Word插件,旨在提高用户在处理文档时…

垫付商贩任务补单平台补单系统网站源码提供

垫付商贩任务补单平台补单系统网站源码提供

MBR20100FCT-ASEMI肖特基二极管MBR20100FCT

编辑:ll MBR20100FCT-ASEMI肖特基二极管MBR20100FCT 型号:MBR20100FCT 品牌:ASEMI 封装:TO-220 最大平均正向电流(IF):20A 最大循环峰值反向电压(VRRM)&#xff1a…

点亮数据之光:Matplotlib让你的数据图表闪耀星空!

在数据的海洋中,Matplotlib是那座通往洞见彼岸的彩虹桥。阿佑带你一探究竟,如何用Matplotlib解锁数据的神秘力量。从基础图表的绘制到高级技巧的掌握,我们一步步揭开数据可视化的神秘面纱。无论你是数据科学家还是图表爱好者,阿佑…

同城信息房产出租小程序源码系统 完全开源可二次开发 带完整的安装代码包以及搭建教程

系统概述 在数字化转型的浪潮中,房产租赁市场也迎来了新的发展机遇。随着移动互联网的普及,越来越多的用户倾向于通过手机应用或小程序来寻找合适的租房信息。为了满足这一需求,小编给大家分享一款“同城信息房产出租小程序源码系统”&#…

pepy - Python 包下载量统计工具站

文章目录 一、关于 pepy站点使用显示下载量 二、代码贡献依赖环境配置启动环境 三、架构和模式四、常问问题 一、关于 pepy 官网:https://www.pepy.techgithub : https://github.com/psincraian/pepy 前端:https://github.com/psincraian/pepy-front 站…

如何给让公众号合集通过调整顺序增加文章阅读量?

公众号合集备点开的次数和顺序的关系是怎样的? 1、排序与点击率的关系 公众号在一次推送中的链接顺序确实会影响用户对各链接的点击率。通常,第一条和最后一条链接的点击率会大于中间的链接。这是基于用户的阅读习惯和注意力分布的一个普遍现象。 2、…

期望薪资22k,三年go好未来5轮面试经历

面经哥专注互联网社招面试经验分享,关注我,每日推送精选面经,面试前,先找面经哥 一面 1、自我介绍 2、说一个项目的架构 3、go主要用的框架 4、对go的中间件和工作机制有了解吗? 5、对数据库操作有什么了解吗 6、…

window上搭建open DHCP server踩坑记录

参考类似的安装说明 window10上搭建open DHCP server_opendhcpserver-CSDN博客 到安装目录里面 OpenDHCPServer.ini 这个是配置文件。 http://127.0.0.1:6789/ 是访问地址,这个地址只是显示结果,不能配置。 需要注意的是:必须要有一个静…

如何通过HarmonyOS开发下肢康复外骨骼系统

项目介绍 我们的项目是由硬件和软件两部分组成。硬件由下肢康复外骨骼对患者进行康复训练。软件部分为鸿蒙APP根据评估患者的结果进行推送,推送的康复动作视频指导患者对康复动作进行及时的纠正和改善,从而使患者的康复效率得到提高。在训练结束后&…

Java学习-MyBatis学习(二)

代码下载 MyBatis核心配置文件 jdbc.drivercom.mysql.cj.jdbc.Driver jdbc.urljdbc:mysql://192.168.29.201:3306/mybatis jdbc.usernameroot jdbc.password123456<configuration><!-- environments&#xff1a;配置多个连接数据库环境default&#xff1a;默认使用的…

【稳定检索/投稿优惠】2024年心理健康与社会科学国际会议(MHSS 2024)

2024 International Conference on Mental Health and Social Sciences 2024年心理健康与社会科学国际会议 【会议信息】 会议简称&#xff1a;MHSS 2024截稿时间&#xff1a;点击查看大会地点&#xff1a;中国三亚会议官网&#xff1a;www.icmhss.com会议邮箱&#xff1a;mhs…

怎么只读USB存储设备?教你两种方法

电脑的USB可以帮助我们连接各种设备&#xff0c;比如移动存储设备。而只读USB则可以保护电脑数据和移动存储设备中的设备。那么&#xff0c;怎么只读USB存储设备&#xff1f;下面我们就一起来了解一下吧。 USB设备只读加密 USB设备只读加密可以在不影响移动存储设备正常使用的…

和数集团最新人事任命通知

根据集团战略发展规划&#xff0c;为进一步拓展业务领域&#xff0c;优化组织架构&#xff0c;完善客户服务&#xff0c;经公司研究决定&#xff0c;现对以下人事进行任命&#xff1a; 任命徐敬东为和数研究院院长 任命李晓峰为常务副总经理 任命陈善明为市场总监 任命窦晓…

深入理解Python多进程

目录 一、引言 二、Python多进程基础 进程与线程的区别 Python多进程模块 三、Python多进程实现原理 进程创建 进程间通信 进程同步 四、Python多进程使用方法 创建进程 进程间通信 五、实战案例 六、总结 一、引言 在Python编程中&#xff0c;多进程是一种重…

C脚本实现用键盘按键控制Wincc某按钮动作

文章目录 前言一、创建Wincc画面并添加变量及按钮二、在“事件”-“键盘”下&#xff0c;编写“按下”和“释放”的C脚本 前言 在某些特定场景下&#xff0c;需要通过电脑键盘控制上位机界面上按钮按下或释放&#xff0c;本文给出了基于C脚本的解决方案。 一、创建Wincc画面并…

commit过大文件,导致push失败如何解决

1、查看过大文件是谁 2、使用该命令删除过大文件 git filter-branch --force --index-filter git rm -rf --cached --ignore-unmatch 文件名 --prune-empty --tag-name-filter cat -- --all 例如&#xff1a; git filter-branch --force --index-filter git rm -rf --cached --…

PlugLink:让数据分析与工作流无缝连接(附源码)

PlugLink&#xff1a;让数据分析与工作流无缝连接 引言 数据分析和自动化工作流已成为各个企业和个人提高效率的关键手段。今天&#xff0c;我要介绍一款名为PlugLink的工具&#xff0c;它不仅能帮助你轻松进行数据分析&#xff0c;还能将这些分析结果无缝连接到你的工作流中&…

洛谷 P4913 二叉树深度(递归)

题目描述 有一个 &#x1d45b;(&#x1d45b;≤10^6) 个结点的二叉树。给出每个结点的两个子结点编号&#xff08;均不超过 &#x1d45b;&#xff09;&#xff0c;建立一棵二叉树&#xff08;根节点的编号为 1&#xff09;&#xff0c;如果是叶子结点&#xff0c;则输入 0。…