Add one-step auto-deployment script

This commit is contained in:
root
2025-05-18 15:48:20 +08:00
parent 951524bff7
commit 0d81aa640e
11 changed files with 4073 additions and 0 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,4 @@
INSERT INTO `chat_model` (`id`, `tenant_id`, `category`, `model_name`, `model_describe`, `model_price`, `model_type`, `model_show`, `system_prompt`, `api_host`, `api_key`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1907575746601119746, '000000', 'vector', 'text-embedding-3-small', 'text-embedding-3-small', 0, '2', '0', NULL, 'https://api.pandarobot.chat/', 'sk-cdBlIaZcufccm2RaDe547cBd054d49C7B0782eCa72A0052b', 103, 1, '2025-04-03 07:27:54', 1, '2025-04-03 07:27:54', 'text-embedding-3-small');
INSERT INTO `chat_model` (`id`, `tenant_id`, `category`, `model_name`, `model_describe`, `model_price`, `model_type`, `model_show`, `system_prompt`, `api_host`, `api_key`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1907576007017066497, '000000', 'vector', 'quentinz/bge-large-zh-v1.5', 'bge-large-zh-v1.5', 0, '2', '0', NULL, 'http://127.0.0.1:11434/', 'cdBlIaZcufccm2RaDe547cBd054d49C7B0782eCa72A0052b', 103, 1, '2025-04-03 07:28:56', 1, '2025-04-03 07:28:56', 'bge-large-zh-v1.5');
INSERT INTO `chat_model` (`id`, `tenant_id`, `category`, `model_name`, `model_describe`, `model_price`, `model_type`, `model_show`, `system_prompt`, `api_host`, `api_key`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1907576806191362049, '000000', 'vector', 'nomic-embed-text', 'nomic-embed-text', 0, '2', '0', NULL, 'http://127.0.0.1:11434/', 'nomic-embed-text', 103, 1, '2025-04-03 07:32:06', 1, '2025-04-03 07:32:06', 'nomic-embed-text');
INSERT INTO `chat_model` (`id`, `tenant_id`, `category`, `model_name`, `model_describe`, `model_price`, `model_type`, `model_show`, `system_prompt`, `api_host`, `api_key`, `create_dept`, `create_by`, `create_time`, `update_by`, `update_time`, `remark`) VALUES (1907577073490161665, '000000', 'vector', 'snowflake-arctic-embed', 'snowflake-arctic-embed', 0, '2', '0', NULL, 'http://127.0.0.1:11434/', 'snowflake-arctic-embed', 103, 1, '2025-04-03 07:33:10', 1, '2025-04-03 07:33:10', 'snowflake-arctic-embed');

View File

@@ -0,0 +1,42 @@
/*
Navicat MySQL Data Transfer
Source Server : 129.211.24.7
Source Server Type : MySQL
Source Server Version : 50744
Source Host : 129.211.24.7:3306
Source Schema : ry-vue
Target Server Type : MySQL
Target Server Version : 50744
File Encoding : 65001
Date: 05/05/2025 15:01:08
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for chat_session
-- ----------------------------
DROP TABLE IF EXISTS `chat_session`;
CREATE TABLE `chat_session` (
`id` bigint(20) NOT NULL COMMENT '主键',
`user_id` bigint(20) NULL DEFAULT NULL COMMENT '用户id',
`session_title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '会话标题',
`session_content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL COMMENT '会话内容',
`create_dept` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '部门',
`create_by` bigint(20) NULL DEFAULT NULL COMMENT '创建者',
`create_time` datetime NULL DEFAULT NULL COMMENT '创建时间',
`update_by` bigint(20) NULL DEFAULT NULL COMMENT '更新者',
`update_time` datetime NULL DEFAULT NULL COMMENT '更新时间',
`remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '会话管理' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS = 1;
ALTER TABLE `chat_message`
ADD COLUMN `session_id` bigint(20) NULL COMMENT '会话id' AFTER `id`;

View File

@@ -0,0 +1,4 @@
ALTER TABLE `chat_model`
ADD COLUMN `api_url` varchar(50) NULL COMMENT '请求后缀' AFTER `api_key`;
INSERT INTO `chat_config` (`id`, `category`, `config_name`, `config_value`, `config_dict`, `create_dept`, `create_time`, `create_by`, `update_by`, `update_time`, `remark`, `version`, `del_flag`, `update_ip`, `tenant_id`) VALUES (1779450794872414211, 'chat', 'apiUrl', 'v1/chat/completions', 'API 请求后缀', 103, '2024-04-14 18:05:05', '1', '1', '2025-04-23 22:29:04', NULL, NULL, '0', NULL, 0);

View File

@@ -0,0 +1,50 @@
# Timezone
TZ={{TZ}}
# MySQL Configuration
MYSQL_ROOT_PASSWORD={{MYSQL_ROOT_PASSWORD}}
MYSQL_DATABASE={{MYSQL_DATABASE}}
MYSQL_PORT={{MYSQL_PORT}}
# Redis Configuration
REDIS_PORT={{REDIS_PORT}}
REDIS_PASSWORD={{REDIS_PASSWORD}}
REDIS_DATABASE={{REDIS_DATABASE}}
REDIS_TIMEOUT={{REDIS_TIMEOUT}}
# Backend Configuration
SERVER_PORT={{SERVER_PORT}}
DB_URL=jdbc:mysql://mysql:3306/{{MYSQL_DATABASE}}?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
DB_USERNAME={{DB_USERNAME}}
DB_PASSWORD={{DB_PASSWORD}}
REDIS_HOST=redis
BACKEND_HOST={{BACKEND_HOST}}
# Frontend Configuration
ADMIN_PORT={{ADMIN_PORT}}
WEB_PORT={{WEB_PORT}}
FRONTEND_API_BASE_URL={{FRONTEND_API_BASE_URL}}
FRONTEND_DEV_PORT={{FRONTEND_DEV_PORT}}
# Weaviate Configuration
WEAVIATE_HTTP_PORT={{WEAVIATE_HTTP_PORT}}
WEAVIATE_GRPC_PORT={{WEAVIATE_GRPC_PORT}}
WEAVIATE_QUERY_LIMIT={{WEAVIATE_QUERY_LIMIT}}
WEAVIATE_ANONYMOUS_ACCESS={{WEAVIATE_ANONYMOUS_ACCESS}}
WEAVIATE_DATA_PATH={{WEAVIATE_DATA_PATH}}
WEAVIATE_VECTORIZER_MODULE={{WEAVIATE_VECTORIZER_MODULE}}
WEAVIATE_MODULES={{WEAVIATE_MODULES}}
WEAVIATE_CLUSTER_HOSTNAME={{WEAVIATE_CLUSTER_HOSTNAME}}
WEAVIATE_PROTOCOL={{WEAVIATE_PROTOCOL}}
WEAVIATE_HOST=weaviate:8080
WEAVIATE_CLASSNAME={{WEAVIATE_CLASSNAME}}
# Production Configuration
PROD_DB_URL={{PROD_DB_URL}}
PROD_DB_USERNAME={{PROD_DB_USERNAME}}
PROD_DB_PASSWORD={{PROD_DB_PASSWORD}}
PROD_REDIS_HOST={{PROD_REDIS_HOST}}
PROD_REDIS_PORT={{PROD_REDIS_PORT}}
PROD_REDIS_DATABASE={{PROD_REDIS_DATABASE}}
PROD_REDIS_PASSWORD={{PROD_REDIS_PASSWORD}}
PROD_REDIS_TIMEOUT={{PROD_REDIS_TIMEOUT}}

View File

@@ -0,0 +1,89 @@
---
# 数据源配置
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
dynamic:
# 性能分析插件(有性能损耗 不建议生产环境使用)
p6spy: false
# 设置默认的数据源或者数据源组,默认值即为 master
primary: master
# 严格模式 匹配不到数据源则报错
strict: true
datasource:
# 主库数据源
master:
type: ${spring.datasource.type}
driverClassName: com.mysql.cj.jdbc.Driver
url: {{PROD_DB_URL}}
username: {{PROD_DB_USERNAME}}
password: {{PROD_DB_PASSWORD}}
hikari:
# 最大连接池数量
maxPoolSize: 20
# 最小空闲线程数量
minIdle: 10
# 配置获取连接等待超时的时间
connectionTimeout: 30000
# 校验超时时间
validationTimeout: 5000
# 空闲连接存活最大时间默认10分钟
idleTimeout: 600000
# 此属性控制池中连接的最长生命周期值0表示无限生命周期默认30分钟
maxLifetime: 1800000
# 连接测试query配置检测连接是否有效
connectionTestQuery: SELECT 1
# 多久检查一次连接的活性
keepaliveTime: 30000
--- # redis 单机配置
spring.data:
redis:
# 地址
host: {{PROD_REDIS_HOST}}
# 端口默认为6379
port: {{PROD_REDIS_PORT}}
# 数据库索引
database: {{PROD_REDIS_DATABASE}}
# 密码
password: {{PROD_REDIS_PASSWORD}}
# 连接超时时间
timeout: {{PROD_REDIS_TIMEOUT}}
# 是否开启ssl
ssl: false
# 日志配置
logging:
level:
org.ruoyi: info
org.springframework: warn
config: classpath:logback-plus.xml
# Sa-Token配置
sa-token:
# token名称 (同时也是cookie名称)
token-name: Authorization
# token有效期 设为7天 (必定过期) 单位: 秒
timeout: 604800
# token临时有效期 (指定时间无操作就过期) 单位: 秒
activity-timeout: 604800
# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
is-concurrent: true
# 在多人登录同一账号时是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
is-share: false
# 是否尝试从header里读取token
is-read-header: true
# 是否尝试从cookie里读取token
is-read-cookie: false
# token前缀
token-prefix: "Bearer"
# jwt秘钥
jwt-secret-key: abcdefghijklmnopqrstuvwxyz
# websocket
websocket:
enabled: true
# 路径
path: '/resource/websocket'
# 设置访问源地址
allowedOrigins: '*'

View File

@@ -0,0 +1,115 @@
version: '3'
services:
mysql:
image: registry.cn-shenzhen.aliyuncs.com/breeze-project/mysql:8.0.33
container_name: ruoyi-ai-mysql
env_file:
- ./.env
environment:
- MYSQL_ROOT_PASSWORD={{MYSQL_ROOT_PASSWORD}}
- MYSQL_DATABASE={{MYSQL_DATABASE}}
ports:
- "{{MYSQL_PORT}}:3306"
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
restart: always
networks:
- ruoyi-net
redis:
image: registry.cn-shenzhen.aliyuncs.com/breeze-project/redis:6.2
container_name: ruoyi-ai-redis
env_file:
- ./.env
ports:
- "{{REDIS_PORT}}:6379"
volumes:
- ./data/redis:/data
command: redis-server --appendonly yes ${REDIS_PASSWORD:+--requirepass ${REDIS_PASSWORD}}
restart: always
networks:
- ruoyi-net
weaviate:
image: registry.cn-shenzhen.aliyuncs.com/breeze-project/weaviate:1.30.0
container_name: ruoyi-ai-weaviate
ports:
- "{{WEAVIATE_HTTP_PORT}}:8080"
- "{{WEAVIATE_GRPC_PORT}}:50051"
volumes:
- ./data/weaviate:/var/lib/weaviate
env_file:
- ./.env
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}}
command: --host 0.0.0.0 --port 8080 --scheme http
restart: always
networks:
- ruoyi-net
ruoyi-backend:
image: ruoyi-ai-backend:latest
container_name: ruoyi-ai-backend
env_file:
- ./.env
ports:
- "{{SERVER_PORT}}:{{SERVER_PORT}}"
environment:
- SERVER_PORT={{SERVER_PORT}}
- DB_URL={{DB_URL}}
- DB_USERNAME={{DB_USERNAME}}
- DB_PASSWORD={{DB_PASSWORD}}
- REDIS_HOST={{REDIS_HOST}}
- REDIS_PORT={{REDIS_PORT}}
- REDIS_DATABASE={{REDIS_DATABASE}}
- REDIS_PASSWORD={{REDIS_PASSWORD}}
- REDIS_TIMEOUT={{REDIS_TIMEOUT}}
- TZ={{TZ}}
volumes:
- ./data/logs:/ruoyi/server/logs
restart: always
depends_on:
- mysql
- redis
- weaviate
networks:
- ruoyi-net
ruoyi-admin:
image: ruoyi-ai-admin:latest
container_name: ruoyi-ai-admin
ports:
- "{{ADMIN_PORT}}:80"
restart: always
depends_on:
- ruoyi-backend
networks:
- ruoyi-net
ruoyi-web:
image: ruoyi-ai-web:latest
container_name: ruoyi-ai-web
ports:
- "{{WEB_PORT}}:80"
restart: always
depends_on:
- ruoyi-backend
networks:
- ruoyi-net
networks:
ruoyi-net:
driver: bridge

View File

@@ -0,0 +1,22 @@
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /prod-api/ {
proxy_pass http://{{BACKEND_HOST}}:{{SERVER_PORT}}/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}

View File

@@ -0,0 +1,22 @@
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
try_files $uri $uri/ /index.html;
}
location /api/ {
proxy_pass http://{{BACKEND_HOST}}:{{SERVER_PORT}}/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}