【特别体验】 Ruoyi-AI项目Docker Compose部署架构深度解析

【免费下载链接】ruoyi-ai RuoYi AI 是一个全栈式 AI 开发平台,旨在帮助开发者快速构建和部署个性化的 AI 应用。 【免费下载链接】ruoyi-ai 项目地址: https://gitcode.com/ageerle/ruoyi-ai

引言:为什么选择Docker Compose部署AI应用?

在当今快速发展的AI应用开发领域,部署复杂度已成为开发者面临的主要挑战之一。传统部署方式需要手动配置数据库、缓存、向量数据库等多个组件,不仅耗时耗力,还容易因环境差异导致部署失败。RuoYi-AI项目通过Docker Compose技术,将复杂的AI应用部署简化为一条命令,真正实现了"快速部署"的愿景。

本文将深度解析RuoYi-AI项目的Docker Compose部署架构,帮助开发者理解其设计理念和技术实现。

整体架构概览

RuoYi-AI采用微服务架构设计,通过Docker Compose统一管理多个核心服务组件:

mermaid

核心服务组件详解

1. 数据库服务(MySQL)

MySQL作为关系型数据库,存储应用的核心业务数据:

mysql:
  image: mysql:8.0.33
  container_name: ruoyi-ai-mysql
  environment:
    - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
    - MYSQL_DATABASE=${MYSQL_DATABASE}
  volumes:
    - ./mysql-init:/docker-entrypoint-initdb.d
    - ./data/mysql:/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

关键配置解析:

  • 字符集配置:使用utf8mb4支持完整Unicode字符集
  • 数据持久化:通过volume映射实现数据持久化存储
  • 初始化脚本:自动执行mysql-init目录下的SQL脚本

2. 缓存服务(Redis)

Redis提供高性能缓存和会话管理:

redis:
  image: redis:6.2
  container_name: ruoyi-ai-redis
  command: redis-server --appendonly yes ${REDIS_PASSWORD:+--requirepass ${REDIS_PASSWORD}}
  volumes:
    - ./data/redis:/data

特性说明:

  • AOF持久化:确保数据安全性和可恢复性
  • 密码保护:支持密码认证,增强安全性
  • 数据持久化:Redis数据目录映射到宿主机

3. 向量数据库(Weaviate)

Weaviate作为AI应用的核心向量数据库,支持语义搜索和相似性检索:

weaviate:
  image: semitechnologies/weaviate:1.30.0
  container_name: ruoyi-ai-weaviate
  environment:  
    - QUERY_DEFAULTS_LIMIT=${WEAVIATE_QUERY_LIMIT}  
    - AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=${WEAVIATE_ANONYMOUS_ACCESS}  
    - PERSISTENCE_DATA_PATH=${WEAVIATE_DATA_PATH}  
    - DEFAULT_VECTORIZER_MODULE=${WEAVIATE_VECTORIZER_MODULE}  
    - ENABLE_MODULES=${WEAVIATE_MODULES}  
    - CLUSTER_HOSTNAME=${WEAVIATE_CLUSTER_HOSTNAME}  
  ports:
    - "50050:8080"
    - "50051:50051"
  volumes:
    - ./data/weaviate:/var/lib/weaviate

核心功能:

  • 向量化存储:支持多种向量化模块
  • 语义搜索:基于向量的相似性检索
  • 多协议支持:同时支持HTTP和gRPC协议

4. 后端服务(RuoYi-Backend)

Spring Boot构建的核心业务逻辑层:

ruoyi-backend:
  image: ruoyi-ai-backend:v2.0.5
  container_name: ruoyi-ai-backend
  ports:
    - "${BACKEND_SERVER_PORT}:${BACKEND_SERVER_PORT}"
  volumes:
    - ./data/logs:/ruoyi/server/logs
  depends_on:
    - mysql
    - redis

依赖关系:

  • 依赖于MySQL和Redis服务启动完成
  • 日志文件映射到宿主机便于排查问题

5. 管理界面(RuoYi-Admin)和Web界面(RuoYi-Web)

前端用户界面服务:

ruoyi-admin:
  image: ruoyi-ai-admin:v2.0.5
  container_name: ruoyi-ai-admin
  ports:
    - "${ADMIN_SERVER_PORT}:80"
  depends_on:
    - ruoyi-backend

ruoyi-web:
  image: ruoyi-ai-web:v2.0.5
  container_name: ruoyi-ai-web
  ports:
    - "${WEB_SERVER_PORT}:80"
  depends_on:
    - ruoyi-backend

网络架构设计

RuoYi-AI采用Docker bridge网络模式,确保服务间安全通信:

networks:
  ruoyi-net:
    driver: bridge

网络优势:

  • 服务隔离:内部服务通过容器网络通信,增强安全性
  • 端口管理:外部访问通过映射端口,内部使用容器网络
  • 服务发现:通过容器名称进行服务发现

环境变量配置体系

项目采用分层环境变量配置,支持灵活部署:

环境变量文件示例(.env)

# MySQL配置
MYSQL_ROOT_PASSWORD=your_mysql_password
MYSQL_DATABASE=ruoyi_ai
MYSQL_PORT=3306

# Redis配置
REDIS_PORT=6379
REDIS_PASSWORD=your_redis_password
REDIS_DATABASE=0

# Weaviate配置
WEAVIATE_QUERY_LIMIT=25
WEAVIATE_ANONYMOUS_ACCESS=true
WEAVIATE_DATA_PATH=/var/lib/weaviate
WEAVIATE_VECTORIZER_MODULE=none
WEAVIATE_MODULES=
WEAVIATE_CLUSTER_HOSTNAME=node1

# 应用端口配置
BACKEND_SERVER_PORT=8080
ADMIN_SERVER_PORT=8082
WEB_SERVER_PORT=8081

数据持久化策略

mermaid

所有关键数据都通过volume映射实现持久化存储:

  • MySQL数据目录:./data/mysql
  • Redis数据目录:./data/redis
  • Weaviate数据目录:./data/weaviate
  • 应用日志目录:./data/logs

部署流程详解

1. 准备阶段

# 克隆项目
git clone https://gitcode.com/ageerle/ruoyi-ai

# 进入部署目录
cd ruoyi-ai/script/deploy/deploy

2. 配置环境变量

# 复制环境变量模板
cp .env.example .env

# 编辑环境变量配置
vi .env

3. 启动服务

# 一键启动所有服务
docker-compose up -d

4. 验证部署

# 查看服务状态
docker-compose ps

# 查看日志
docker-compose logs -f

性能优化建议

1. 资源分配策略

服务 建议内存 建议CPU 备注
MySQL 2GB 2核心 根据数据量调整
Redis 1GB 1核心 缓存服务
Weaviate 4GB 2核心 向量计算密集型
Backend 2GB 2核心 业务逻辑处理
Admin/Web 512MB 1核心 前端界面

2. 网络优化

# 在docker-compose.yaml中添加资源限制
services:
  mysql:
    deploy:
      resources:
        limits:
          memory: 2G
          cpus: '2'
        reservations:
          memory: 1G
          cpus: '1'

故障排查指南

常见问题及解决方案

问题现象 可能原因 解决方案
MySQL启动失败 权限问题或端口冲突 检查data目录权限,修改端口
Redis连接超时 密码配置错误 检查REDIS_PASSWORD配置
Weaviate服务异常 内存不足 增加内存分配或调整向量化配置
后端服务依赖错误 服务启动顺序问题 使用depends_on确保依赖服务就绪

日志查看命令

# 查看特定服务日志
docker-compose logs mysql
docker-compose logs redis
docker-compose logs weaviate

# 实时跟踪日志
docker-compose logs -f ruoyi-backend

安全最佳实践

1. 网络安全配置

# 限制外部访问,仅暴露必要端口
services:
  mysql:
    ports:
      - "127.0.0.1:3306:3306"  # 仅本地访问
    
  redis:
    ports:
      - "127.0.0.1:6379:6379"  # 仅本地访问

2. 数据加密

  • 使用TLS加密数据库连接
  • 配置Redis SSL连接
  • 敏感信息通过环境变量管理

扩展与定制

1. 自定义服务配置

# 添加监控服务
prometheus:
  image: prom/prometheus:latest
  ports:
    - "9090:9090"
  volumes:
    - ./prometheus.yml:/etc/prometheus/prometheus.yml
  networks:
    - ruoyi-net

2. 多环境部署

通过不同的compose文件支持多环境:

  • docker-compose.yml - 开发环境
  • docker-compose.prod.yml - 生产环境
  • docker-compose.test.yml - 测试环境

总结与展望

RuoYi-AI项目的Docker Compose部署架构体现了现代云原生应用的最佳实践:

  1. 服务解耦:每个组件独立容器化,便于维护和扩展
  2. 配置集中:通过环境变量统一管理配置,支持多环境部署
  3. 数据持久化:关键数据通过volume实现持久化存储
  4. 网络隔离:内部服务通过专用网络通信,增强安全性
  5. 依赖管理:通过depends_on确保服务启动顺序

这种架构不仅简化了部署流程,还为后续的弹性扩缩容、服务网格集成、持续部署等高级特性奠定了基础。随着AI技术的不断发展,这种基于容器化的部署方式将成为AI应用开发的标准实践。

通过本文的深度解析,相信开发者能够更好地理解RuoYi-AI项目的部署架构,并在实际项目中灵活运用这些最佳实践,构建更加稳定、高效的AI应用系统。

【免费下载链接】ruoyi-ai RuoYi AI 是一个全栈式 AI 开发平台,旨在帮助开发者快速构建和部署个性化的 AI 应用。 【免费下载链接】ruoyi-ai 项目地址: https://gitcode.com/ageerle/ruoyi-ai

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐