mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-03-19 15:43:42 +08:00
180 lines
5.4 KiB
YAML
180 lines
5.4 KiB
YAML
# RuoYi-AI 一键启动全部服务
|
||
# 使用方式: docker-compose up -d
|
||
#
|
||
# 包含服务:
|
||
# - MySQL 8.0 (数据库,包含初始化SQL)
|
||
# - Redis 6.2 (缓存)
|
||
# - Weaviate (向量数据库)
|
||
# - MinIO (对象存储)
|
||
# - RuoYi-Backend (后端服务)
|
||
# - RuoYi-Admin (管理端前端)
|
||
# - RuoYi-Web (用户端前端)
|
||
#
|
||
# 镜像仓库地址: crpi-31mraxd99y2gqdgr.cn-beijing.personal.cr.aliyuncs.com/ruoyi_ai
|
||
|
||
version: '3.8'
|
||
|
||
services:
|
||
# ==================== MySQL 数据库 ====================
|
||
mysql:
|
||
# 阿里云镜像地址(包含初始化SQL)
|
||
image: crpi-31mraxd99y2gqdgr.cn-beijing.personal.cr.aliyuncs.com/ruoyi_ai/mysql:v3
|
||
container_name: ruoyi-ai-mysql
|
||
restart: always
|
||
ports:
|
||
- "23306:3306"
|
||
environment:
|
||
MYSQL_ROOT_PASSWORD: root
|
||
MYSQL_DATABASE: ruoyi-ai-agent
|
||
TZ: Asia/Shanghai
|
||
volumes:
|
||
- mysql-data:/var/lib/mysql
|
||
healthcheck:
|
||
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-proot"]
|
||
interval: 15s
|
||
timeout: 10s
|
||
retries: 10
|
||
start_period: 60s
|
||
networks:
|
||
- ruoyi-net
|
||
|
||
# ==================== Redis 缓存 ====================
|
||
redis:
|
||
image: crpi-31mraxd99y2gqdgr.cn-beijing.personal.cr.aliyuncs.com/ruoyi_ai/redis:6.2
|
||
container_name: ruoyi-ai-redis
|
||
restart: always
|
||
ports:
|
||
- "26379:6379"
|
||
volumes:
|
||
- redis-data:/data
|
||
command: redis-server --appendonly yes
|
||
healthcheck:
|
||
test: ["CMD", "redis-cli", "ping"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 5
|
||
networks:
|
||
- ruoyi-net
|
||
|
||
# ==================== Weaviate 向量数据库 ====================
|
||
weaviate:
|
||
image: crpi-31mraxd99y2gqdgr.cn-beijing.personal.cr.aliyuncs.com/ruoyi_ai/weaviate:1.30.0
|
||
container_name: ruoyi-ai-weaviate
|
||
restart: always
|
||
ports:
|
||
- "28080:8080"
|
||
environment:
|
||
QUERY_DEFAULTS_LIMIT: 25
|
||
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: true
|
||
PERSISTENCE_DATA_PATH: /var/lib/weaviate
|
||
DEFAULT_VECTORIZER_MODULE: none
|
||
ENABLE_MODULES: text2vec-cohere,text2vec-huggingface,text2vec-palm,text2vec-openai,generative-openai,generative-cohere,generative-palm,ref2vec-centroid,reranker-cohere,qna-openai
|
||
CLUSTER_HOSTNAME: node1
|
||
volumes:
|
||
- weaviate-data:/var/lib/weaviate
|
||
networks:
|
||
- ruoyi-net
|
||
|
||
# ==================== MinIO 对象存储 ====================
|
||
minio:
|
||
image: crpi-31mraxd99y2gqdgr.cn-beijing.personal.cr.aliyuncs.com/ruoyi_ai/minio:latest
|
||
container_name: ruoyi-ai-minio
|
||
restart: always
|
||
ports:
|
||
- "29000:9000"
|
||
- "29090:9090"
|
||
environment:
|
||
MINIO_ROOT_USER: ruoyi
|
||
MINIO_ROOT_PASSWORD: ruoyi123
|
||
volumes:
|
||
- minio-data:/data
|
||
command: server /data --console-address ":9090"
|
||
networks:
|
||
- ruoyi-net
|
||
|
||
# ==================== RuoYi-AI 后端服务 ====================
|
||
backend:
|
||
image: crpi-31mraxd99y2gqdgr.cn-beijing.personal.cr.aliyuncs.com/ruoyi_ai/ruoyi-ai-backend:latest
|
||
container_name: ruoyi-ai-backend
|
||
restart: always
|
||
ports:
|
||
- "26039:6039"
|
||
environment:
|
||
TZ: Asia/Shanghai
|
||
# MySQL 配置
|
||
SPRING_DATASOURCE_DYNAMIC_PRIMARY: master
|
||
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_DRIVERCLASSNAME: com.mysql.cj.jdbc.Driver
|
||
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL: jdbc:mysql://mysql:3306/ruoyi-ai-agent?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
|
||
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME: root
|
||
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD: root
|
||
# Redis 配置
|
||
SPRING_DATA_REDIS_HOST: redis
|
||
SPRING_DATA_REDIS_PORT: 6379
|
||
SPRING_DATA_REDIS_DATABASE: 0
|
||
# 日志配置
|
||
LOGGING_LEVEL_ORG_RUOYI: info
|
||
LOGGING_LEVEL_ORG_SPRINGFRAMEWORK: warn
|
||
SYS_UPLOAD_PATH: /ruoyi/upload
|
||
volumes:
|
||
- logs-data:/ruoyi/server/logs
|
||
- upload-data:/ruoyi/upload
|
||
depends_on:
|
||
mysql:
|
||
condition: service_healthy
|
||
redis:
|
||
condition: service_started
|
||
networks:
|
||
- ruoyi-net
|
||
|
||
# ==================== RuoYi-AI 管理端前端 ====================
|
||
admin-frontend:
|
||
image: crpi-31mraxd99y2gqdgr.cn-beijing.personal.cr.aliyuncs.com/ruoyi_ai/ruoyi-ai-admin:latest
|
||
container_name: ruoyi-ai-admin
|
||
restart: always
|
||
ports:
|
||
- "25666:5666"
|
||
environment:
|
||
# 后端 API 地址 - 运行时动态配置(无需重新构建镜像)
|
||
# nginx upstream 配置不需要 http:// 前缀,直接使用 host:port
|
||
UPSTREAM_HOST: backend:6039
|
||
# 资源限制 - 防止 CPU 和内存耗尽
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
cpus: '2'
|
||
memory: 3G
|
||
reservations:
|
||
cpus: '1'
|
||
memory: 1G
|
||
depends_on:
|
||
- backend
|
||
networks:
|
||
- ruoyi-net
|
||
|
||
# ==================== RuoYi-AI 用户端前端 ====================
|
||
web-frontend:
|
||
image: crpi-31mraxd99y2gqdgr.cn-beijing.personal.cr.aliyuncs.com/ruoyi_ai/ruoyi-ai-web:latest
|
||
container_name: ruoyi-ai-web
|
||
restart: always
|
||
ports:
|
||
- "25137:5137"
|
||
environment:
|
||
UPSTREAM_URL: http://backend:6039
|
||
depends_on:
|
||
- backend
|
||
networks:
|
||
- ruoyi-net
|
||
|
||
# ==================== 网络配置 ====================
|
||
networks:
|
||
ruoyi-net:
|
||
driver: bridge
|
||
|
||
# ==================== 数据卷配置 ====================
|
||
volumes:
|
||
mysql-data:
|
||
redis-data:
|
||
weaviate-data:
|
||
minio-data:
|
||
logs-data:
|
||
upload-data: |