mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-03-18 23:23:43 +08:00
145 lines
4.0 KiB
YAML
145 lines
4.0 KiB
YAML
# RuoYi-AI 一键启动后端服务
|
|
# 使用方式: docker-compose up -d --build
|
|
#
|
|
# 包含服务:
|
|
# - MySQL 8.0 (数据库)
|
|
# - Redis 6.2 (缓存)
|
|
# - Weaviate (向量数据库)
|
|
# - MinIO (对象存储)
|
|
# - RuoYi-Backend (后端服务,源码编译)
|
|
|
|
services:
|
|
# MySQL 数据库
|
|
mysql:
|
|
image: mysql:8.0.33
|
|
container_name: ruoyi-ai-mysql
|
|
restart: always
|
|
ports:
|
|
- "23306:3306"
|
|
environment:
|
|
MYSQL_ROOT_PASSWORD: root
|
|
MYSQL_DATABASE: ruoyi-ai-agent
|
|
TZ: Asia/Shanghai
|
|
volumes:
|
|
- ./docs/script/docker/mysql/init/init-db.sh:/docker-entrypoint-initdb.d/init-db.sh:ro
|
|
- ./docs/script/sql/ruoyi-ai-v3_mysql8.sql:/docker-entrypoint-initdb.d/ruoyi-ai-v3_mysql8.sql:ro
|
|
- mysql-data:/var/lib/mysql
|
|
command:
|
|
--default-authentication-plugin=mysql_native_password
|
|
--character-set-server=utf8mb4
|
|
--collation-server=utf8mb4_general_ci
|
|
--explicit_defaults_for_timestamp=true
|
|
--lower_case_table_names=1
|
|
--skip-ssl
|
|
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: redis:6.2
|
|
container_name: ruoyi-ai-redis
|
|
restart: always
|
|
ports:
|
|
- "6379: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: semitechnologies/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: minio/minio
|
|
container_name: ruoyi-ai-minio
|
|
restart: always
|
|
ports:
|
|
- "9000:9000"
|
|
- "9090: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:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile.backend
|
|
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 # 新增:对应 sys.upload.path
|
|
volumes:
|
|
- logs-data:/ruoyi/server/logs
|
|
- upload-data:/ruoyi/upload
|
|
depends_on:
|
|
mysql:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_started
|
|
networks:
|
|
- ruoyi-net
|
|
|
|
networks:
|
|
ruoyi-net:
|
|
driver: bridge
|
|
|
|
# 数据卷 支持手动指定 空为默认值
|
|
volumes:
|
|
mysql-data:
|
|
redis-data:
|
|
weaviate-data:
|
|
minio-data:
|
|
logs-data:
|
|
upload-data:
|