AnythingLLM的Docker使用方式

 更新时间:2025年02月18日 08:44:22   作者:myepicure888  
文章介绍了如何使用AnythingLLM的Docker镜像,并提供了一些生成和自定义Docker镜像的详细步骤,包括下载代码、构建镜像和启动容器

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.

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 $?

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Docker初级网络端口映射的配置

    Docker初级网络端口映射的配置

    这篇文章主要介绍了Docker初级网络端口映射的配置,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • docker搭建devops(腾讯云轻量应用服务器)教程

    docker搭建devops(腾讯云轻量应用服务器)教程

    这篇文章主要为大家介绍了docker搭建devops(腾讯云轻量应用服务器)教程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • Docker中namespace隔离的实战

    Docker中namespace隔离的实战

    Namespace是Linux内核的一个功能,用于隔离和管理系统资源,如进程、网络和文件系统等,通过创建隔离的命名空间,系统可以实现容器化和资源隔离,提高系统的安全性和稳定性,这种技术广泛应用于Docker等容器技术中,本文就来介绍一下Docker中namespace隔离的实战
    2024-11-11
  • docker-compose安装Jenkins的实践笔记

    docker-compose安装Jenkins的实践笔记

    jenkins是一个比较强大的自动构建工具, Jenkins是开源CI&CD软件领导者,提供超过1000个插件来支持构建、部署、自动化,本文给大家介绍docker-compose安装Jenkins的实践笔记,感兴趣的朋友一起看看吧
    2021-09-09
  • 通过容器技术(docker)部署MySQL读写分离

    通过容器技术(docker)部署MySQL读写分离

    Mycat作为开源数据库中间件,在MySQL读写分离架构中发挥核心作用,通过智能代理层实现读写请求的自动路由、负载均衡与故障转移,从而提高系统性能和可用性
    2026-01-01
  • Docker搭建ELK日志系统,并通过Kibana查看日志方式

    Docker搭建ELK日志系统,并通过Kibana查看日志方式

    这篇文章主要介绍了Docker搭建ELK日志系统,并通过Kibana查看日志方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • docker添加网桥并设置ip地址范围操作

    docker添加网桥并设置ip地址范围操作

    这篇文章主要介绍了docker添加网桥并设置ip地址范围操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Docker部署verdaccio搭建npm私服的实现

    Docker部署verdaccio搭建npm私服的实现

    本女王主要介绍了Docker部署verdaccio搭建npm私服的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • Docker 安装 Neo4j 保姆级教程(最新整理)

    Docker 安装 Neo4j 保姆级教程(最新整理)

    本文详细介绍了如何在Windows和Linux环境下通过Docker安装和配置 Neo4j图数据库,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-10-10
  • 阿里云安装docker全过程

    阿里云安装docker全过程

    这篇文章主要介绍了阿里云安装docker全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-04-04

最新评论