文章目錄
- Windows使用docker部署FastGPT出現的一些問題
- 1.docker部署pg一直重啟的問題
- 2.重啟MongoDB之后一直出現“Waiting for MongoDB to start...”
- 3.oneapi啟動不了failed to get gpt-3.5-turbo token encoder
Windows使用docker部署FastGPT出現的一些問題
1.docker部署pg一直重啟的問題
猜測是權限問題,請教了fastgpt的飛書社區之后更改yml文件
解決辦法:
將掛載的配置選項改成以下配置volumes:- ./pg/data:/var/lib/postgresql/data && sudo chmod 0750 /var/lib/postgresql/data
或者volumes:- ./pg/data:/var/lib/postgresql/data && sudo chmod 0700 /var/lib/postgresql/data
2.重啟MongoDB之后一直出現“Waiting for MongoDB to start…”
起初是發現fastgpt的網頁打不開
然后查看日志發現MongoDB連不上,查看MongoDB日志發現全都是Waiting for MongoDB to start…
報錯日志:
[1739937319:887261][10:0x7f07fc766c80], file:WiredTiger.wt, connection: __posix_open_file, 815: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted"}}
2025-02-19 11:55:19 {"t":{"$date":"2025-02-19T03:55:19.903+00:00"},"s":"E", "c":"STORAGE", "id":22435, "ctx":"initandlisten","msg":"WiredTiger error","attr":{"error":1,"message":"[1739937319:903566][10:0x7f07fc766c80], file:WiredTiger.wt, connection: __posix_open_file, 815: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted"}}
2025-02-19 11:55:19 {"t":{"$date":"2025-02-19T03:55:19.919+00:00"},"s":"E", "c":"STORAGE", "id":22435, "ctx":"initandlisten","msg":"WiredTiger error","attr":{"error":1,"message":"[1739937319:919680][10:0x7f07fc766c80], file:WiredTiger.wt, connection: __posix_open_file, 815: /data/db/WiredTiger.wt: handle-open: open: Operation not permitted"}}
2025-02-19 11:55:19 {"t":{"$date":"2025-02-19T03:55:19.920+00:00"},"s":"W", "c":"STORAGE", "id":22347, "ctx":"initandlisten","msg":"Failed to start up WiredTiger under any compatibility version. This may be due to an unsupported upgrade or downgrade."}
2025-02-19 11:55:19 {"t":{"$date":"2025-02-19T03:55:19.920+00:00"},"s":"F", "c":"STORAGE", "id":28595, "ctx":"initandlisten","msg":"Terminating.","attr":{"reason":"1: Operation not permitted"}}
2025-02-19 11:55:19 {"t":{"$date":"2025-02-19T03:55:19.920+00:00"},"s":"F", "c":"-", "id":23091, "ctx":"initandlisten","msg":"Fatal assertion","attr":{"msgid":28595,"file":"src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp","line":688}}
2025-02-19 11:55:19 {"t":{"$date":"2025-02-19T03:55:19.920+00:00"},"s":"F", "c":"-", "id":23092, "ctx":"initandlisten","msg":"\n\n***aborting after fassert() failure\n\n"}
2025-02-19 11:55:21 Waiting for MongoDB to start...
2025-02-19 11:55:23 Waiting for MongoDB to start...
從錯誤日志來看,MongoDB 無法啟動的原因是 WiredTiger 存儲引擎無法打開文件 /data/db/WiredTiger.wt
,提示 Operation not permitted
。這通常與文件權限或掛載卷的配置有關。
解決辦法:
第一次嘗試是將卷映射關閉掉
...
environment:- MONGO_INITDB_ROOT_USERNAME=myusername- MONGO_INITDB_ROOT_PASSWORD=mypassword
entrypoint:- bash- -c- |
...
發現這個方法重啟之后確實可以訪問fastgpt了,但是我在fastgpt里面加配置之后再重啟容器,我里面配置的東西全沒有了,故選擇第二個方法第二次嘗試使用docker卷映射:
mongo:image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18container_name: mongorestart: alwaysports:- 27017:27017networks:- fastgptcommand: mongod --keyFile /data/mongodb.key --replSet rs0environment:- MONGO_INITDB_ROOT_USERNAME=myusername- MONGO_INITDB_ROOT_PASSWORD=mypasswordvolumes:- mongo_data:/data/dbentrypoint:- bash- -c- |openssl rand -base64 128 > /data/mongodb.keychmod 400 /data/mongodb.keychown 999:999 /data/mongodb.keyecho 'const isInited = rs.status().ok === 1if(!isInited){rs.initiate({_id: "rs0",members: [{ _id: 0, host: "mongo:27017" }]})}' > /data/initReplicaSet.js# 啟動MongoDB服務exec docker-entrypoint.sh "$$@" &# 等待MongoDB服務啟動until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; doecho "Waiting for MongoDB to start..."sleep 2done# 執行初始化副本集的腳本mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js# 等待docker-entrypoint.sh腳本執行的MongoDB服務進程wait $$!volumes:mongo_data:這邊使用docker卷來進行映射,這樣重啟之后數據就還在了。
3.oneapi啟動不了failed to get gpt-3.5-turbo token encoder
報錯信息:
failed to get gpt-3.5-turbo token encoder: Get “https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken”: tls: failed to verify certificate: x509: certificate is not authorized to sign other certificates
解決辦法:
1.下載文件:https://openaipublic.blob.core.windows.net/encodings/cl100k_base.tiktoken
2.將該文件復制一份然后分別改名為:
9b5ad71b2ce5302211f9c61530b329a4922fc6a4
fb374d419588a4632f3f557e76b4b70aebbca790
3.將該文件放在fastgpt/oneapi/cache位置下
4.更改docker-compose文件:
oneapi:container_name: oneapi# image: ghcr.io/songquanpeng/one-api:v0.6.7image: registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 # 阿里云ports:- 3001:3000depends_on:- mysqlnetworks:- fastgptrestart: alwaysenvironment:# mysql 連接參數- SQL_DSN=root:oneapimmysql@tcp(mysql:3306)/oneapi# 登錄憑證加密密鑰- SESSION_SECRET=oneapikey# 內存緩存- MEMORY_CACHE_ENABLED=true# 啟動聚合更新,減少數據交互頻率- BATCH_UPDATE_ENABLED=true# 聚合更新時長- BATCH_UPDATE_INTERVAL=10# 初始化的 root 密鑰(建議部署完后更改,否則容易泄露)- INITIAL_ROOT_TOKEN=fastgpt# 修復無法獲取gpt3.5令牌錯誤- TIKTOKEN_CACHE_DIR=/data/cachevolumes:- ./oneapi:/data
5.重啟docker