【docker】AnythingLLM的docker-compose及一些启动踩坑

摘要:使用docker-compose配置和启动AnythingLLM服务。配置包括指定镜像、设置容器名称、端口映射、数据卷挂载等。

通过docker-compose启动AnythingLLM可以进行以下配置:

services:
  anythingllm:
    image: docker.io/mintplexlabs/anythingllm:latest
    container_name: anythingllm
    ports:
      - "3001:3001"
    volumes:
      - ./data:/data
    environment:
      - VECTOR_STORE_DIR=/app/data/vectorstore
      - STORAGE_DIR=/app/data/storage
      - MODEL_DIR=/app/models
    restart: unless-stopped

image 镜像:修改为自己的镜像名称:版本

container_name 容器名:不与其他容器重复即可

ports 端口:3001:3001

volumes 数据卷挂载:实际地址./data:容器内地址/data

restart 重启策略: unless-stopped除非手动停止,否则容器将在退出后自动重启

docker-compose up -d

运行启动

一些踩坑:

启动anythingllm时候报错:

1.WARNING: STORAGE_DIR environment variable is not set!

一些版本所需环境变量不一致,docker logs xxx 查看启动日志,如果有相关报错,在docker-compose里environment下面添加即可。

⚠️  ⚠️  ⚠️  WARNING: STORAGE_DIR environment variable is not set! ⚠️  ⚠️  ⚠️
================================================================
node:internal/validators:162
    throw new ERR_INVALID_ARG_TYPE(name, 'string', value);
    ^

TypeError [ERR_INVALID_ARG_TYPE]: The "paths[0]" argument must be of type string. Received undefined
    at new NodeError (node:internal/errors:405:5)
    at validateString (node:internal/validators:162:11)
    at Object.resolve (node:path:1115:7)
    at Object. (/app/collector/utils/files/index.js:12:12)
    at Module._compile (node:internal/modules/cjs/loader:1364:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1422:10)
    at Module.load (node:internal/modules/cjs/loader:1203:32)
    at Module._load (node:internal/modules/cjs/loader:1019:12)
    at Module.require (node:internal/modules/cjs/loader:1231:19)
    at require (node:internal/modules/helpers:177:18) {
  code: 'ERR_INVALID_ARG_TYPE'
}

Node.js v18.20.8

解决:我这里提示缺少 STORAGE_DIR,添加环境变量后重启(注意这个不是本地的环境变量,而是配置给容器内部的)。 

2.Error: EACCES: permission denied, mkdir 'xxx'

启动报错权限不够,默认情况下,Docker 容器以 root 以外的非特权用户运行,无法写入某些本地目录:

node:internal/fs/utils:356 throw err; ^
Error: EACCES: permission denied, mkdir '/app/data/vectorstore/models/context-windows' at Object.mkdirSync (node:fs:1391:3) at new ContextWindowFinder 
(/app/server/utils/AiProviders/modelMap/index.js:39:10) at Object. 
(/app/server/utils/AiProviders/modelMap/index.js:206:31) at Module._compile 
(node:internal/modules/cjs/loader:1364:14) at Module._extensions..js 
(node:internal/modules/cjs/loader:1422:10) at Module.load 
(node:internal/modules/cjs/loader:1203:32) at Module._load 
(node:internal/modules/cjs/loader:1019:12) at Module.require 
(node:internal/modules/cjs/loader:1231:19) at require 
(node:internal/modules/helpers:177:18) at Object. 
(/app/server/utils/AiProviders/gemini/index.js:11:23) { errno: -13, syscall: 'mkdir', code: 'EACCES', path: '/app/data/vectorstore/models/context-windows' }

 解决:赋予挂载的实际地址777权限,或者手动创建报错目录,我在配置文件中设置的是./data路径,所以进行如下操作

mkdir -p ./data/vectorstore/models/context-windows
chmod -R 777 ./data

你可能感兴趣的:(docker,AI,docker,容器,ai)