在使用 AnythingLLM 时,为了确保数据的持久化和安全性,我们通常需要在本地挂载存储目录。这样,即使 Docker 容器被删除或重建,数据也不会丢失。本文将详细介绍如何在本地挂载存储并在 Docker 中运行 AnythingLLM。
一、准备工作
1. 安装 Docker
确保你已经安装并启动了 Docker。如果还没有安装,可以从 Docker 官网下载并安装:
二、配置本地存储
1. 创建存储目录
在本地创建一个目录用于保存 AnythingLLM 的持久化文件。例如,在 Linux 或 macOS 上:
bash复制
sudo mkdir -p /app/anythingllm
sudo chmod 777 /app/anythingllm -R
在 Windows 上,可以使用类似以下路径:
bash复制
set STORAGE_LOCATION=%USERPROFILE%\Documents\anythingllm
mkdir %STORAGE_LOCATION%
2. 创建 .env
文件
在存储目录中创建一个 .env
文件,用于存储配置参数:
bash复制
touch /app/anythingllm/.env
或者在 Windows 上:
bash复制
type nul > %STORAGE_LOCATION%\.env
SERVER_PORT=3001
STORAGE_DIR="/app/anythingllm"
UID='1000'
GID='1000'
chmod 777 .env
三、运行 Docker 容器
1. 拉取 AnythingLLM 镜像
拉取最新版本的 AnythingLLM 镜像:
bash复制
docker pull mintplexlabs/anythingllm:latest
2. 运行 Docker 容器
使用以下命令运行 AnythingLLM 容器,并挂载本地存储目录:
bash复制
docker run -d -p 3001:3001 \
--restart always \
--cap-add SYS_ADMIN \
--add-host=host.docker.internal:host-gateway \
-v /app/anythingllm:/app/server/storage \
-v /app/anythingllm/.env:/app/server/.env \
-e STORAGE_DIR="/app/server/storage" \
--name anythingllm \
mintplexlabs/anythingllm:latest
其中:
-d 表示后台运行容器。
--restart always 设置容器的重启策略。
--name anythingllm 为容器指定一个名称。
--cap-add SYS_ADMIN 添加SYS_ADMIN能力给容器,这意味着容器将获得更多的系统管理权限,比如进行磁盘管理、网络配置等
--privileged=true 使容器以特权模式运行,这将给予容器几乎相同于宿主机的权限。
-p 3001:3001 \ 将容器的3001端口映射到宿主机的3001端口。
-v /data/docker/anythingllm/data:/app/server/storage 将宿主机的数据目录挂载到容器中。
/data/docker/anythingllm/env/env.txt:/app/server/.env 将宿主机的配置文件挂载到容器中。
mintplexlabs/anythingllm 指定要使用的AnythingLLM镜像和版本(latest)。
在 Windows 上,可以使用类似以下命令:
bash复制
docker run -d -p 3001:3001 \
--cap-add SYS_ADMIN \
--add-host=host.docker.internal:host-gateway \
-v %STORAGE_LOCATION%:/app/server/storage \
-v %STORAGE_LOCATION%\.env:/app/server/.env \
-e STORAGE_DIR="/app/server/storage" \
--name anythingllm \
mintplexlabs/anythingllm:latest
四、验证运行状态
1. 查看容器状态
运行以下命令查看容器是否正常启动:
bash复制
docker ps
2. 查看日志
如果需要查看容器的日志,可以运行:
bash复制
docker logs anythingllm -f
3. 访问 Web 界面
打开浏览器,访问 http://localhost:3001
,如果安装无误,你应该能看到 AnythingLLM 的界面。
五、常见问题及解决方案
1. 权限问题
如果你遇到权限问题,确保挂载的目录和文件具有正确的权限。可以使用以下命令调整权限:
bash复制
sudo chmod -R 777 /app/anythingllm
2. 路径问题
确保 .env
文件和存储目录的路径正确。如果路径不正确,容器可能无法正确加载配置。
3. 容器无法启动
如果容器无法启动,可以查看日志以获取更多信息:
bash复制
docker logs anythingllm
六、总结
通过上述步骤,你可以在本地挂载存储并在 Docker 中运行 AnythingLLM。所有数据和进度将持久保存在本地存储目录中,即使容器重建或重新拉取镜像,数据也不会丢失。如果在运行过程中遇到问题,可以参考官方文档或社区支持。
希望本文能帮助你顺利运行 AnythingLLM。如果有任何问题,欢迎在评论区留言交流。