docker啟動(dòng)anything llm報(bào)unable to open database file: ../storage/anythingllm.db問(wèn)題及解決
docker啟動(dòng)anything llm報(bào)unable to open database file: ../storage/anythingllm.db
docker的安裝和anything llm鏡像的下載就不在過(guò)多介紹,下載docker和鏡像的時(shí)候,記得切換到國(guó)內(nèi)源,否則很可能下載速度緩慢或者下載失敗。
運(yùn)行命令參考的是官網(wǎng)的命令
export STORAGE_LOCATION=$HOME/anythingllm && \
mkdir -p $STORAGE_LOCATION && \
touch "$STORAGE_LOCATION/.env" && \
docker run -d -p 3001:3001 \
--cap-add SYS_ADMIN \
-v ${STORAGE_LOCATION}:/app/server/storage \
-v ${STORAGE_LOCATION}/.env:/app/server/.env \
-e STORAGE_DIR="/app/server/storage" \
mintplexlabs/anythingllm
但是總會(huì)報(bào)錯(cuò)
Environment variables loaded from .env Prisma schema loaded from prisma/schema.prisma Datasource "db": SQLite database "anythingllm.db" at "file:../storage/anythingllm.db" Error: Schema engine error: SQLite database error unable to open database file: ../storage/anythingllm.db
最初以為是映射問(wèn)題
總在映射上找原因,搜索了很多,但是沒(méi)有能夠解決問(wèn)題的辦法。
瀏覽了下官網(wǎng)的安裝文檔
發(fā)現(xiàn)了一個(gè)比較奇怪的說(shuō)明,具體鏈接
The UID and GID are set to 1000 by default. This is the default user in the Docker container and on most host operating systems.
If there is a mismatch between your host user UID and GID and what is set in the .env file, you may experience permission issues.
1000是linux普通用戶的標(biāo)識(shí),而docker run的時(shí)候使用的是root,所以沒(méi)有往權(quán)限方面想,難道是映射的文件夾權(quán)限不足?
于是:
chmod 777 anythingllm
再次運(yùn)行,果然成功了。
總結(jié)
因?yàn)閐ocker運(yùn)行時(shí)創(chuàng)建文件的用戶是uid為1000的普通用戶,如果使用root進(jìn)行目錄創(chuàng)建,普通用戶是無(wú)法寫(xiě)入文件的,所以導(dǎo)致運(yùn)行的時(shí)候報(bào)錯(cuò),修改目錄權(quán)限即可。
當(dāng)然如果覺(jué)得777權(quán)限過(guò)大,可以通過(guò)chown改變目錄所有者為uid為1000的用戶。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
keepalived+nginx+httpd實(shí)現(xiàn)的雙機(jī)熱備+負(fù)載均衡
本文主要介紹了keepalived + nginx + httpd 實(shí)現(xiàn)的雙機(jī)熱備+負(fù)載均衡,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
Docker容器部署Elasticsearch并配置分詞器的方法實(shí)現(xiàn)
本文主要介紹了Docker容器部署Elasticsearch并配置分詞器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2026-04-04
docker+gitlab+gitlab-runner部署詳解
這篇文章主要介紹了docker+gitlab+gitlab-runner部署詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
Docker容器化應(yīng)用與結(jié)構(gòu)
本文詳細(xì)講解了Docker的容器化應(yīng)用與結(jié)構(gòu),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04
Docker部署Redis緩存服務(wù)的實(shí)現(xiàn)步驟
本文介紹了使用Docker部署Redis緩存服務(wù)的步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-07-07
docker 打包本地鏡像,并到其他機(jī)器進(jìn)行恢復(fù)操作
這篇文章主要介紹了docker 打包本地鏡像,并到其他機(jī)器進(jìn)行恢復(fù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11

