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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Day50 代码随想录打卡|二叉树篇---验证二叉搜索树

题目(leecode T98): 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右…

SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件

SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件 H2 是一个用 Java 开发的嵌入式数据库,它的主要特性使其成为嵌入式应用程序的理想选择。H2 仅是一个类库,可以直接嵌入到应用项目中,而无需独立安装客户端和服务器端。 常用开源数…

Docker部署常见应用之大数据基础框架Hadoop

文章目录 Hadoop简介主要特点核心组件生态系统 Docker Compose 部署集群参考文章 Hadoop简介 Hadoop是一个开源框架,由Apache软件基金会开发,用于在普通硬件构建的集群中存储和处理大量数据。它最初由Doug Cutting和Mike Cafarella创建,并受…

安卓照片找回不再困扰,掌握5个步骤让回忆永不褪色

手机照片记录了过去,承载着我们的回忆,让我们能够在繁忙的生活中找到那份温暖和宁静。然而,随着时间的推移和技术的进步,照片的存储和备份方式也在不断变化。当我们不小心删除了手机里的照片时,那份失落和焦虑便油然而…

【Python】数据处理:SQLite操作

使用 Python 与 SQLite 进行交互非常方便。SQLite 是一个轻量级的关系数据库,Python 标准库中包含一个名为 sqlite3 的模块,可以直接使用。 import sqlite3数据库连接和管理 连接到 SQLite 数据库。如果数据库文件不存在,则创建一个新数据库…

家用洗地机前十名排行榜:2024十大热销款式好用不踩雷

洗地机强大的清洁力和高效的清洁效率,迅速代替了吸尘器、电动拖把、蒸汽拖把的位置,成为家庭地面清洁的新宠,各大厂商也纷纷上新自家新品。但是这个也造成了人们在挑选机型的时候无从下手,甚至很多新手购机,几乎对洗地…

【学习笔记】finalshell上传文件夹、上传文件失败或速度为0

出现标题所述的情况,大概率是finalshell上传文件的过程中的权限不够。 可参照:Finalshell上传文件失败或者进度总为百分之零解决方法 如果不成功,建议关闭客户端重试。 同时建议在设置finalshell的ssh连接时根据不同用户设置多个连接&#xf…

【git使用一】windows下git下载、安装和卸载

目录 (1)下载安装包 (2)安装git (3)安装验证 (4)卸载git (1)下载安装包 官网下载地址:Git 国内镜像下载地址:CNPM Binaries Mir…

[C++] 从零实现一个ping服务

💻文章目录 前言ICMP概念报文格式 Ping服务实现系统调用函数具体实现运行测试 总结 前言 ping命令,因为其简单、易用等特点,几乎所有的操作系统都内置了一个ping命令。如果你是一名C初学者,对网络编程、系统编程有所了解&#xff…

Qt creator day1 练习

自由发挥登录窗口的应用场景,实现一个登录窗口界面,要求:第行代码都有注释 #include "mywidget.h"MyWidget::MyWidget(QWidget *parent): QWidget(parent) {this->setWindowTitle("贪玩蓝月——是兄弟就来砍我 登入&#…

[亲测好用]10个热门音频剪辑软件分享,快来看看你适合哪种

市面上的音频剪辑软件千千万,要想找到适合自己的音频剪辑软件的话,还是需要多多对比。今天小编总结了市面上比较热门的10款热门音频剪辑软件来进行对比测评,希望可以通过这篇文章可以帮助你找到适合自己的音频剪辑软件。 音频剪辑软件一&…

论文研读|以真实图像为参考依据的AIGC检测

前言:这篇文章介绍几篇AIGC检测的相关工作,其中前几篇文章是以真实图像的特征作为标准进行检测,最后一篇文章就当拓展一下知识边界吧~ 目录 Detecting Generated Images by Real Images Only (202311 arXiv)Let Real Images be as…

高速直线导轨驱动与控制,精准稳定的运动核心元件

直线导轨在工业生产中,精度和稳定性是至关重要的。而在各种机械设备中,高精度直线导轨是提高设备运动控制精度和平稳性的核心部件,当我们考虑高速运动时,直线导轨的精度和稳定性是非常重要的因素。 直线导轨系统中如何确保高速运动…

美丽的拉萨,神奇的布达拉宫

原文链接:美丽的拉萨,神奇的布达拉宫 2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT-3.5,将人工智能的发展推向了一个新的高度。2023年11月7日,OpenAI首届…

Selenium - 启动后报org.openqa.selenium.InvalidArgumentException: invalid argument错

● 出现的异常: Build info: version: 3.141.59, revision: e82be7d358, time: 2018-11-14T08:25:48 System info: host: DESKTOP-H7TOMMO, ip: 192.168.64.1, os.name: Windows 10, os.arch: amd64, os.version: 10.0, java.version: 1.8.0_131 Driver info: dr…

git 常用操作指令

文章目录 git clonegit configgit addgit commitgit rmgit branch/checkoutgit pull/push git clone git clone 可以将一个远程 Git 仓库拷贝到本地,让自己能够查看该项目,或者进行修改。 拷贝项目命令格式如下:git clone [url] [url] 是你要…

解决IDEA报错Could not find resource mybatis-config.xml最全排错解决收录

解决IDEA报错:Could not find resource mybatis-config.xml最全排错解决收录 1.问题产生 迁移新项目的Java web开发测试数据库时IDEA爆Could not find resource mybatis-config.xml 这个错误表明Mybatis无法找到名为mybatis-config.xml的配置文件。 需要确保该文件存在于cla…

Python学习从0开始——Kaggle时间序列001

Python学习从0开始——Kaggle时间序列001 一、具有时间序列的线性回归1.时间序列2.时间序列线性回归1.时间步特征2.滞后特征 二、趋势1.介绍2.移动平均图3.设计趋向4.使用 三、季节性1.介绍2.季节图和季节指标季节性的指标 3.傅里叶特征和周期图用周期图选择傅里叶特征计算傅里…

等保三级怎么做,一文讲清楚

吉祥学安全知识星球🔗除了包含技术干货:《Java代码审计》《Web安全》《应急响应》《护网资料库》《网安面试指南》还包含了安全中常见的售前护网案例、售前方案、ppt等,同时也有面向学生的网络安全面试、护网面试等。 前面我们讲过等保二级方…

WARNING: pip is configured with locations that require TLS/SSL

在pycharm中运行pip下载软件包遇到该问题:WARNING: pip is configured with locations that require TLS/SSL, however the ssl module in Python is not available 原因:没有安装openssl; 到https://slproweb.com/products/Win32OpenSSL.ht…