From 00ce7f2d9858ad43dfa7a398356db851f5938460 Mon Sep 17 00:00:00 2001 From: LM20230311 Date: Mon, 16 Mar 2026 15:32:27 +0800 Subject: [PATCH] chore: update port mappings in docker-compose.yaml for MySQL, Weaviate, and backend services --- Dockerfile.mysql | 21 +++++ docker-compose-all.yaml | 174 ++++++++++++++++++++++++++++++++++++++++ docker-compose.yaml | 6 +- 3 files changed, 198 insertions(+), 3 deletions(-) create mode 100644 Dockerfile.mysql create mode 100644 docker-compose-all.yaml diff --git a/Dockerfile.mysql b/Dockerfile.mysql new file mode 100644 index 00000000..d5fcecb7 --- /dev/null +++ b/Dockerfile.mysql @@ -0,0 +1,21 @@ +# 基于官方MySQL 8.0镜像构建自定义镜像 +# 构建命令: docker build -t registry.cn-hangzhou.aliyuncs.com/ruoyi-ai/mysql:v3 -f Dockerfile.mysql . +FROM mysql:8.0.33 + +# 设置时区 +ENV TZ=Asia/Shanghai + +# 复制初始化脚本和SQL文件到镜像中 +COPY docs/script/docker/mysql/init/init-db.sh /docker-entrypoint-initdb.d/init-db.sh +COPY docs/script/sql/ruoyi-ai-v3_mysql8.sql /docker-entrypoint-initdb.d/ruoyi-ai-v3_mysql8.sql + +# 设置脚本可执行权限 +RUN chmod +x /docker-entrypoint-initdb.d/init-db.sh + +# MySQL启动参数 +CMD ["--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"] \ No newline at end of file diff --git a/docker-compose-all.yaml b/docker-compose-all.yaml new file mode 100644 index 00000000..b1dda41d --- /dev/null +++ b/docker-compose-all.yaml @@ -0,0 +1,174 @@ +# 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" + # 资源限制 - 防止 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" + depends_on: + - backend + networks: + - ruoyi-net + +# ==================== 网络配置 ==================== +networks: + ruoyi-net: + driver: bridge + +# ==================== 数据卷配置 ==================== +volumes: + mysql-data: + redis-data: + weaviate-data: + minio-data: + logs-data: + upload-data: \ No newline at end of file diff --git a/docker-compose.yaml b/docker-compose.yaml index 8f449c52..eac534d8 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -15,7 +15,7 @@ services: container_name: ruoyi-ai-mysql restart: always ports: - - "3306:3306" + - "23306:3306" environment: MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: ruoyi-ai-agent @@ -64,7 +64,7 @@ services: container_name: ruoyi-ai-weaviate restart: always ports: - - "8080:8080" + - "28080:8080" environment: QUERY_DEFAULTS_LIMIT: 25 AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: true @@ -102,7 +102,7 @@ services: container_name: ruoyi-ai-backend restart: always ports: - - "6039:6039" + - "26039:6039" environment: TZ: Asia/Shanghai # MySQL 配置