复制代码
# 数据库的默认账号和密码仅首次运行时设置有效
# 如果修改了账号密码,记得改数据库和项目连接参数,别只改一处~
# 该配置文件只是给快速启动,测试使用。正式使用,记得务必修改账号密码,以及调整合适的知识库参数,共享内存等。
# 如何无法访问 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: