FastGPT及大模型API(Docker)私有化部署指南

??歡迎關注【AI技術開發者】

?

經過優化,在不影響FastGPT功能的情況下,大幅降低了部署的設備配置要求,僅需1c1h即可正常部署使用。

官方要求配置:

?6d150f4a27024b7782535400afa8863d.png

?

優化后的實際占用情況:

運行內存僅需370M(測試學習場景下)

?84f66502ea624548a2be0aa14c44427e.png

?

官方推薦部署容器:

?pg?

?mongo?

?sandbox?

?fastgpt?

?mysql?

?oneapi?

優化后實際部署容器:

?fastgpt?

?new-api?

?mongo?

?sandbox?

?pg?

優化內容:

刪除mysql容器,降低內存占用。

將oneapi更換為new-api,原使用的mysql數據庫更換為pg數據庫。

使用pg容器作為公共數據庫,存儲FastGPT的向量數據和new-api的數據。

并且優化后不會影響FastGPT的更新及使用。

開始部署

部署前,需要提前配置好docker環境

?0a5ccf76cdd84836aefa775dfd582069.png

?

準備配置文件

首先下載配置文件

curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json

這個暫時不用修改

創建docker-compose.yml?編排文件,寫入以下內容(可根據情況自行更改參數)

默認對外開放端口:

12002:FastGPT

12003:new-api

12004:pg數據庫

# 數據庫的默認賬號和密碼僅首次運行時設置有效
# 如果修改了賬號密碼,記得改數據庫和項目連接參數,別只改一處~
# 該配置文件只是給快速啟動,測試使用。正式使用,記得務必修改賬號密碼,以及調整合適的知識庫參數,共享內存等。
# 如何無法訪問 dockerhub 和 git,可以用阿里云(阿里云沒有arm包)version: '3.3'
services:# dbpg:# image: pgvector/pgvector:0.7.0-pg15 # docker hubimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云container_name: pgrestart: alwaysports: # 生產環境建議不要暴露- 12005:5432networks:- fastgptenvironment:# 這里的配置只有首次運行生效。修改后,重啟鏡像是不會生效的。需要把持久化數據刪除再重啟,才有效果- POSTGRES_USER=username- POSTGRES_PASSWORD=password- POSTGRES_DB=postgresvolumes:- ./pg/data:/var/lib/postgresql/datamongo:# image: mongo:5.0.18 # dockerhubimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云# image: mongo:4.4.29 # cpu不支持AVX時候使用container_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 $$!# fastgptsandbox:container_name: sandbox# image: ghcr.io/labring/fastgpt-sandbox:v4.8.17 # gitimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.8.17 # 阿里云networks:- fastgptrestart: alwaysfastgpt:container_name: fastgpt# image: ghcr.io/labring/fastgpt:v4.8.17 # gitimage: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.17 # 阿里云ports:- 12002:3000networks:- fastgptdepends_on:- mongo- pg- sandboxrestart: alwayscpus: '0.65'  # 限制最多使用 1 個 CPU 核心environment:# 前端訪問地址: http://localhost:3000- FE_DOMAIN=http://localhost:12002# root 密碼,用戶名為: root。如果需要修改 root 密碼,直接修改這個環境變量,并重啟即可。- DEFAULT_ROOT_PSW=1234# AI模型的API地址哦。務必加 /v1。這里默認填寫了OneApi的訪問地址。- OPENAI_BASE_URL=http://new-api:3000/v1# AI模型的API Key。(這里默認填寫了OneAPI的快速默認key,測試通后,務必及時修改)- CHAT_API_KEY=sk-fastgpt# 數據庫最大連接數- DB_MAX_LINK=30# 登錄憑證密鑰- TOKEN_KEY=any# root的密鑰,常用于升級時候的初始化請求- ROOT_KEY=root_key# 文件閱讀加密- FILE_TOKEN_KEY=filetoken# MongoDB 連接參數. 用戶名myusername,密碼mypassword。- MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin# pg 連接參數- PG_URL=postgresql://username:password@pg:5432/postgres# sandbox 地址- SANDBOX_URL=http://sandbox:3000# 日志等級: debug, info, warn, error- LOG_LEVEL=info- STORE_LOG_LEVEL=warnvolumes:- ./config.json:/app/data/config.json# new-apinew-api:image: 1ms.run/calciumion/new-api:latestcontainer_name: new-apirestart: alwayscommand: --log-dir /app/logsports:- 12003:3000volumes:- ./newapi:/data- ./napi-logs:/app/logsnetworks:- fastgptenvironment:- SQL_DSN=postgres://username:password@pg:5432/new-api  # Point to the mysql service# - REDIS_CONN_STRING=redis://redis- TZ=Asia/Shanghai#      - SESSION_SECRET=random_string  # 多機部署時設置,必須修改這個隨機字符串!!!!!!!#      - NODE_TYPE=slave  # Uncomment for slave node in multi-node deployment#      - SYNC_FREQUENCY=60  # Uncomment if regular database syncing is needed#      - FRONTEND_BASE_URL=https://openai.justsong.cn  # Uncomment for multi-node deployment with front-end URLhealthcheck:test: [ "CMD-SHELL", "wget -q -O - http://localhost:3000/api/status | grep -o '\"success\":\\s*true' | awk -F: '{print $2}'" ]interval: 30stimeout: 10sretries: 3
networks:fastgpt:

需要重點修改的是fastgpt?容器的環境變量

FE_DOMAIN=  // 前端訪問地址
DEFAULT_ROOT_PSW= // 登錄密碼
OPENAI_BASE_URL= // AI模型的API地址哦。務必加 /v1。編排文件這里默認填寫了OneApi的訪問地址。
CHAT_API_KEY= //  AI模型的API Key。

其他內容不重要,按需修改即可

啟動容器

在 docker-compose.yml 同級目錄下執行。請確保docker-compose?版本最好在2.17以上,否則可能無法執行自動化命令。

# 啟動容器
docker-compose up -d

打開 ip:12002? 即可訪問FastGPT頁面

后面會繼續更新如何添加其他自定義模型

?歡迎關注【AI技術開發者】

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70226.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70226.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70226.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

解決 WSL Ubuntu 中 /etc/resolv.conf 自動重置問題

解決 WSL Ubuntu 中 /etc/resolv.conf 自動重置問題 前言問題描述問題原因嘗試過的命令及分析解決方案:修改 wsl.conf 禁用自動生成總結 前言 在使用 Windows Subsystem for Linux (WSL) 的 Ubuntu 子系統時,你可能會遇到 /etc/resolv.conf 文件被自動重…

【第15章:量子深度學習與未來趨勢—15.3 量子深度學習在圖像處理、自然語言處理等領域的應用潛力分析】

一、開篇:為什么我們需要關注這場"量子+AI"的世紀聯姻? 各位技術愛好者們,今天我們要聊的這個話題,可能是未來十年最值得押注的技術革命——量子深度學習。這不是簡單的"1+1=2"的物理疊加,而是一場可能徹底改寫AI發展軌跡的范式轉移。 想象這樣一個…

企業軟件合規性管理:構建高效、安全的軟件資產生態

引言 在數字化轉型的浪潮下,企業的軟件使用方式日益多元化,涉及云端、訂閱制、永久授權及浮動許可等多種模式。然而,隨著軟件資產的增多,企業面臨著合規性管理的嚴峻挑戰:非法軟件使用、許可證管理不當、軟件資產閑置…

python學習筆記,python處理 Excel、Word、PPT 以及郵件自動化辦公

文章目錄 前言一、環境搭建1. 下載 Python2. 安裝 Python 二、處理 Excel 文件(openpyxl庫)三、 處理 Word 文件(python-docx庫)四、 處理 PPT 文件(python-pptx庫)五、 自動發送郵件(smtplib和…

Python 基礎-循環

目錄 簡介 break continue 小結 簡介 要計算123,我們可以直接寫表達式: >>> 1 2 3 6要計算123...10,勉強也能寫出來。 但是,要計算123...10000,直接寫表達式就不可能了。 為了讓計算機能計算成千上…

簡單易懂,解析Go語言中的Channel管道

Channel 管道 1 初始化 可用var聲明nil管道;用make初始化管道; len(): 緩沖區中元素個數, cap(): 緩沖區大小 //變量聲明 var a chan int //使用make初始化 b : make(chan int) //不帶緩沖區 c : make(chan stri…

python-leetcode 36.二叉樹的最大深度

題目: 給定一個二叉樹root,返回其最大深度 二叉樹的最大深度是指從根節點到最遠葉子節點的最長路徑上的節點數 方法一:深度優先搜索 知道了左子樹和右子樹的最大深度l和r,那么該二叉樹的最大深度即為:max(l,r)1 而左子樹和右子樹的最大深…

RESTful 的特點與普通 Web API 的區別

RESTful 是一種設計風格,而不僅僅是普通的 Web API。它遵循一些特定的原則和約束,使得 API 更加簡潔、可擴展和易于理解。以下是 RESTful 的特點,以及與普通 Web API 的區別: RESTful 的特點 1. 資源導向 RESTful API 的核心是資…

結構風荷載理論與Matlab計算

結構風荷載理論與matlab計算的實例程序,適合初學者理解matlab風荷載計算 資源文件列表 程序_結構風荷載理論與Matlab計算/chapter1/exam_simWind_1_1.m , 1035 程序_結構風荷載理論與Matlab計算/chapter1/Extrmv.m , 303 程序_結構風荷載理論與Matlab計算/chapter1…

numpy(02 數據類型和數據類型轉換)

numpy(01 入門) 目錄 一、Python NumPy 數據類型 1.1 NumPy 基本類型 1.2 數據類型對象 (dtype) 1.3 具體實例 二、Numpy數據類型轉換 2.1 浮點數據轉換 2.2 整型數據轉換 2.3 浮點數轉整數 一、Python NumPy 數據類型 1.1 NumPy 基本類型 下表列舉了常用 NumPy 基…

【雅思博客04】Silence please!

A: Those people in front of us are making so much noise. It’s so inconsiderate! B: Don’t worry about it; it’s not such a big deal. A: Oh... I can’t hear a thing! Excuse me, can you keep it down? C: Sure, sorry about that! A: Someone’s phone is ri…

【大語言模型_3】ollama本地加載deepseek模型后回答混亂問題解決

背景: 本地下載了DeepSeek-R1-Distill-Qwen-7B模型后,通過ollama create DeepSeek-R1-Distill-Qwen-7B -f ds7b.mf加載模型啟動后回答混亂,無法使用。 解決方法 重新下載模型,選擇了DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf 重…

nginx ngx_http_module(9) 指令詳解

nginx ngx_http_module(9) 指令詳解 nginx 模塊目錄 nginx 全指令目錄 一、目錄 1.1 模塊簡介 ngx_http_uwsgi_module:uWSGI支持模塊,允許Nginx與uWSGI服務器進行通信。uWSGI是一種應用服務器協議,廣泛用于Python Web應用的部署。通過該…

用PyInstaller構建動態腳本執行器:嵌入式Python解釋器與模塊打包 - 簡明教程

技術場景: 需分發的Python工具要求終端用戶可動態修改執行邏輯將Python環境與指定庫(如NumPy/Pandas)嵌入可執行文件實現"一次打包,動態擴展"的輕量化解決方案。 ▌ 架構設計原理 1. 雙模運行時識別 # 核心判斷邏輯…

山石網科×阿里云通義靈碼,開啟研發“AI智造”新時代

近日,山石網科正式宣布全面接入阿里云通義靈碼企業專屬版,這標志著山石網科在研發智能化、自動化領域邁出重要一步,為研發工作注入強大的AI動力,實現多維度的效率飛躍。 此次合作,阿里云通義靈碼依托強大的AI能力&…

《被討厭的勇氣》(六)

1.自由就是被別人討厭。 2.毫不在意別人的評價、不害怕被別人討厭、不追求被他人認可,如果不付出以上這些代價,那就無法貫徹自己的生活方式,也就是不能獲得自由。 3.在意你的臉的只有你自己。 4.不去干涉別人的課題也不讓別人干涉自己的課題.…

使用 PyTorch 實現標準卷積神經網絡(CNN)

卷積神經網絡(CNN)是深度學習中的重要組成部分,廣泛應用于圖像處理、語音識別、視頻分析等任務。在這篇博客中,我們將使用 PyTorch 實現一個標準的卷積神經網絡(CNN),并介紹各個部分的作用。 什…

SpringBoot2.0整合Redis(Lettuce版本)

前言: 目前java操作redis的客戶端有jedis跟Lettuce。在springboot1.x系列中,其中使用的是jedis, 但是到了springboot2.x其中使用的是Lettuce。 因為我們的版本是springboot2.x系列,所以今天使用的是Lettuce。關于jedis跟lettuce的區別&#…

qt + opengl 給立方體增加陰影

在前幾篇文章里面學會了通過opengl實現一個立方體,那么這篇我們來學習光照。 風氏光照模型的主要結構由3個分量組成:環境(Ambient)、漫反射(Diffuse)和鏡面(Specular)光照。下面這張圖展示了這些光照分量看起來的樣子: 1 環境光照(Ambient …

大模型工具大比拼:SGLang、Ollama、VLLM、LLaMA.cpp 如何選擇?

簡介:在人工智能飛速發展的今天,大模型已經成為推動技術革新的核心力量。無論是智能客服、內容創作,還是科研輔助、代碼生成,大模型的身影無處不在。然而,面對市場上琳瑯滿目的工具,如何挑選最適合自己的那…