fastgpt本地运行起来的 服务配置
本文档是一个FastGPT系统的Docker Compose配置文件,详细说明了各服务容器的配置参数和部署注意事项。主要内容包括: 系统架构:包含GPT-Vis API、MongoDB、PostgreSQL、Redis、MinIO等核心服务,以及AI代理、插件服务等组件 关键配置项: 数据库默认账号密码仅首次运行有效 MinIO存储服务配置 各服务间的网络连接和依赖关系 端口映射和健康检查设置 注
·
# 数据库的默认账号和密码仅首次运行时设置有效
# 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~
# 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。
# 如何无法访问 dockerhub 和 git,可以用阿里云(阿里云没有arm包)
version: '3.3'
services:
# GPT-Vis 图表渲染API(离线图表生成核心)
gpt-vis-api:
image: apconw/gpt-vis-api:0.0.1
container_name: gpt-vis-api
restart: unless-stopped
networks:
- fastgpt # 加入fastgpt网络,确保与其他服务通信
ports:
- "3100:3000" # 宿主机端口:容器端口(可自定义)
environment:
# MinIO配置(需与fastgpt-minio保持一致)
- MINIO_ENDPOINT=fastgpt-minio # 同一网络下用服务名访问,替代host.docker.internal
- MINIO_PORT=9000 # 对应fastgpt-minio的9000端口
- MINIO_USE_SSL="false"
- MINIO_ACCESS_KEY=minioadmin # 与fastgpt-minio的MINIO_ROOT_USER一致
- MINIO_SECRET_KEY=minioadmin # 与fastgpt-minio的MINIO_ROOT_PASSWORD一致
- MINIO_BUCKET=chart-images # 需提前在MinIO控制台创建此桶
- MINIO_PUBLIC_DOMAIN="http://192.16.140.163:9000" # 宿主机IP:MinIO端口(前端可访问)
- AUTH_TOKEN=xxxxxx # 可选:设置认证令牌,不设置则禁用
depends_on:
fastgpt-minio:
condition: service_healthy # 确保MinIO启动正常后再启动
volumes:
- ./src/index.js:/usr/src/app/index.js # 本地代码挂载(调试用)
# mcp-server-echart
mcp-server-chart:
image: mcp-server-chart:latest # 使用本地构建的镜像
ports:
- "1122:1122"
environment:
# 覆盖默认的 VIS_REQUEST_SERVER,指向 GPT-VIS-API 内部地址
- VIS_REQUEST_SERVER=http://gpt-vis-api:3000/generate
depends_on:
- gpt-vis-api
networks:
- fastgpt
# mcphub
mcphub:
image: samanhappy/mcphub:latest
container_name: mcphub
restart: always
networks:
- fastgpt
ports:
- "3003:3000"
volumes:
- /home/wangmin/fastgpt/mcpapp/mcp_settings.json:/mcpapp/mcp_settings.json
# one-api
one-api:
image: justsong/one-api
container_name: oneapi
restart: always
networks:
- fastgpt
ports:
- "3001:3000" #设置端口映射,可自定义
environment:
- TZ=Asia/Shanghai
volumes:
- /data/oneapi/data:/data
# Vector DB
pg:
image: pgvector/pgvector:0.8.0-pg15 # docker hub
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.8.0-pg15 # 阿里云
container_name: pg
restart: always
ports: # 生产环境建议不要暴露
- 5432:5432
networks:
- fastgpt
environment:
# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
- POSTGRES_USER=username
- POSTGRES_PASSWORD=password
- POSTGRES_DB=postgres
volumes:
- ./pg/data:/var/lib/postgresql/data
healthcheck:
test: ['CMD', 'pg_isready', '-U', 'username', '-d', 'postgres']
interval: 5s
timeout: 5s
retries: 10
# DB
mongo:
image: mongo:5.0.18 # dockerhub
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
# image: mongo:4.4.29 # cpu不支持AVX时候使用
container_name: mongo
restart: always
ports:
- 27017:27017
networks:
- fastgpt
command: mongod --keyFile /data/mongodb.key --replSet rs0
environment:
- MONGO_INITDB_ROOT_USERNAME=myusername
- MONGO_INITDB_ROOT_PASSWORD=mypassword
volumes:
- ./mongo/data:/data/db
entrypoint:
- bash
- -c
- |
openssl rand -base64 128 > /data/mongodb.key
chmod 400 /data/mongodb.key
chown 999:999 /data/mongodb.key
echo 'const isInited = rs.status().ok === 1
if(!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')"; do
echo "Waiting for MongoDB to start..."
sleep 2
done
# 执行初始化副本集的脚本
mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js
# 等待docker-entrypoint.sh脚本执行的MongoDB服务进程
wait $$!
redis:
image: redis:7.2-alpine
container_name: redis
networks:
- fastgpt
restart: always
ports:
- 6379:6379
command: |
redis-server --requirepass mypassword --loglevel warning --maxclients 10000 --appendonly yes --save 60 10 --maxmemory 4gb --maxmemory-policy noeviction
healthcheck:
test: ['CMD', 'redis-cli', '-a', 'mypassword', 'ping']
interval: 10s
timeout: 3s
retries: 3
start_period: 30s
volumes:
- ./redis/data:/data
fastgpt-minio:
image: minio/minio:RELEASE.2025-04-22T22-12-26Z
container_name: fastgpt-minio
restart: always
networks:
- fastgpt
ports: # comment out if you do not need to expose the port (in production environment, you should not expose the port)
- '9000:9000'
- '9001:9001'
environment:
- MINIO_ROOT_USER=minioadmin
- MINIO_ROOT_PASSWORD=minioadmin
volumes:
- ./fastgpt-minio:/data
command: server /data --console-address ":9001"
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:9000/minio/health/live']
interval: 30s
timeout: 20s
retries: 3
sandbox:
container_name: sandbox
image: ghcr.io/labring/fastgpt-sandbox:v4.10.1 # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:v4.10.1 # 阿里云
networks:
- fastgpt
restart: always
fastgpt-mcp-server:
container_name: fastgpt-mcp-server
image: ghcr.io/labring/fastgpt-mcp_server:v4.10.1 # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-mcp_server:v4.10.1 # 阿里云
ports:
- 3005:3000
networks:
- fastgpt
restart: always
environment:
- FASTGPT_ENDPOINT=http://192.16.140.163:3000
fastgpt-plugin:
image: ghcr.io/labring/fastgpt-plugin:v0.1.3 # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-plugin:v0.1.3 # 阿里云
container_name: fastgpt-plugin
restart: always
ports:
- 3006:3000
networks:
- fastgpt
environment:
- AUTH_TOKEN=xxxxxx # disable authentication token if you do not set this variable
# 改成 minio 可访问地址,例如 https://192.168.2.2:9000
- MINIO_CUSTOM_ENDPOINT=http://192.16.140.163:9000
- MINIO_ENDPOINT=fastgpt-minio
- MINIO_PORT=9000
- MINIO_USE_SSL=false
- MINIO_ACCESS_KEY=minioadmin
- MINIO_SECRET_KEY=minioadmin
- MINIO_BUCKET=fastgpt-plugins
depends_on:
fastgpt-minio:
condition: service_healthy
# AI Proxy
aiproxy:
image: ghcr.io/labring/aiproxy:v0.2.2
# image: registry.cn-hangzhou.aliyuncs.com/labring/aiproxy:v0.2.2 # 阿里云
container_name: aiproxy
restart: unless-stopped
depends_on:
aiproxy_pg:
condition: service_healthy
networks:
- fastgpt
environment:
# 对应 fastgpt 里的AIPROXY_API_TOKEN
- ADMIN_KEY=aiproxy
# 错误日志详情保存时间(小时)
- LOG_DETAIL_STORAGE_HOURS=1
# 数据库连接地址
- SQL_DSN=postgres://postgres:aiproxy@aiproxy_pg:5432/aiproxy
# 最大重试次数
- RETRY_TIMES=3
# 不需要计费
- BILLING_ENABLED=false
# 不需要严格检测模型
- DISABLE_MODEL_CONFIG=true
healthcheck:
test: ['CMD', 'curl', '-f', 'http://localhost:3000/api/status']
interval: 5s
timeout: 5s
retries: 10
aiproxy_pg:
image: pgvector/pgvector:0.8.0-pg15 # docker hub
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.8.0-pg15 # 阿里云
restart: unless-stopped
container_name: aiproxy_pg
volumes:
- ./aiproxy_pg:/var/lib/postgresql/data
networks:
- fastgpt
environment:
TZ: Asia/Shanghai
POSTGRES_USER: postgres
POSTGRES_DB: aiproxy
POSTGRES_PASSWORD: aiproxy
healthcheck:
test: ['CMD', 'pg_isready', '-U', 'postgres', '-d', 'aiproxy']
interval: 5s
timeout: 5s
retries: 10
networks:
fastgpt:
.env.local
LOG_DEPTH=3
# 默认用户密码,用户名为 root,每次重启时会自动更新。
DEFAULT_ROOT_PSW=123456
# 数据库最大连接数
DB_MAX_LINK=5
# 文件阅读时的密钥
FILE_TOKEN_KEY=filetokenkey
# 密钥加密key
AES256_SECRET_KEY=fastgptsecret
# root key, 最高权限
ROOT_KEY=fdafasd
# 强制将图片转成 base64 传递给模型
MULTIPLE_DATA_TO_BASE64=true
# Service url
# 商业版地址
PRO_URL=
# Plugin
PLUGIN_BASE_URL=http://localhost:3006
PLUGIN_TOKEN=xxxxxx
# code sandbox url
SANDBOX_URL=http://localhost:3001
# ai proxy api
AIPROXY_API_ENDPOINT=http://localhost:3000
AIPROXY_API_TOKEN=aiproxy
# OpenAI Base URL
OPENAI_BASE_URL=http://localhost:3001/v1
CHAT_API_KEY=sk-TJUZ1Ho6fLrdR3Cz1eA6A44966964036903fF945Db865390
# Redis URL
REDIS_URL=redis://default:mypassword@localhost:6379
# mongo 数据库连接参数,本地开发连接远程数据库时,可能需要增加 directConnection=true 参数,才能连接上。
MONGODB_URI=mongodb://myusername:mypassword@localhost:27017/fastgpt?authSource=admin&directConnection=true
# 日志库
MONGODB_LOG_URI=mongodb://myusername:mypassword@localhost:27017/fastgpt?authSource=admin&directConnection=true
# 向量库优先级: pg > oceanbase > milvus
# PG 向量库连接参数
PG_URL=postgresql://username:password@localhost:5432/postgres
# OceanBase 向量库连接参数
OCEANBASE_URL=
# milvus 向量库连接参数
MILVUS_ADDRESS=
MILVUS_TOKEN=
# 页面的地址,用于自动补全相对路径资源的 domain,注意后面不要跟 /
FE_DOMAIN=http://localhost:3000
# 文件域名,也是指向 FastGPT 服务,但是如果希望内容足够安全,可以独立分配一个域名,避免高危文件读取到主域名的内容。
FILE_DOMAIN=http://localhost:3000
# 二级路由,需要打包时候就确定
# NEXT_PUBLIC_BASE_URL=/fastai
# 日志等级: debug, info, warn, error
LOG_LEVEL=debug
STORE_LOG_LEVEL=warn
# 安全配置
# 对话文件 n 天过期
CHAT_FILE_EXPIRE_TIME=7
# 启动 IP 限流(true),部分接口增加了 ip 限流策略,防止非正常请求操作。
USE_IP_LIMIT=false
# 工作流最大运行次数,避免极端的死循环情况
WORKFLOW_MAX_RUN_TIMES=500
# 循环最大运行次数,避免极端的死循环情况
WORKFLOW_MAX_LOOP_TIMES=50
# 启用内网 IP 检查
CHECK_INTERNAL_IP=false
# 密码错误锁时长:s
PASSWORD_LOGIN_LOCK_SECONDS=
# 密码过期月份,不设置则不会过期
PASSWORD_EXPIRED_MONTH=
# 最大登录客户端数量,默认为 10
MAX_LOGIN_SESSION=
# 特殊配置
# 自定义跨域,不配置时,默认都允许跨域(逗号分割)
ALLOWED_ORIGINS=
# 是否展示兑换码功能
SHOW_COUPON=false
# 自定义 config.json 路径
CONFIG_JSON_PATH=
# 对话日志推送服务
# # 日志服务地址
# CHAT_LOG_URL=http://localhost:8080
# # 日志推送间隔
# CHAT_LOG_INTERVAL=10000
# # 日志来源ID前缀
# CHAT_LOG_SOURCE_ID_PREFIX=fastgpt-
# Signoz
SIGNOZ_BASE_URL=
SIGNOZ_SERVICE_NAME=
更多推荐
所有评论(0)