mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-04-17 05:43:39 +00:00
v3.0.0 init
This commit is contained in:
Binary file not shown.
@@ -1,5 +0,0 @@
|
||||
FROM nginx:1.25-alpine
|
||||
COPY dist/ /usr/share/nginx/html/
|
||||
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||
EXPOSE 80
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
@@ -1,22 +0,0 @@
|
||||
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://ruoyi-backend:6039/;
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
FROM openjdk:17-jdk
|
||||
WORKDIR /app
|
||||
COPY ruoyi-admin.jar /app/ruoyi-admin.jar
|
||||
EXPOSE 8080
|
||||
ENTRYPOINT ["java","-jar","ruoyi-admin.jar"]
|
||||
@@ -1,5 +0,0 @@
|
||||
FROM nginx:1.25-alpine
|
||||
COPY dist/ /usr/share/nginx/html/
|
||||
COPY nginx.conf /etc/nginx/conf.d/default.conf
|
||||
EXPOSE 80
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
@@ -1,22 +0,0 @@
|
||||
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://ruoyi-backend:6039/;
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
# 应用标题
|
||||
VITE_APP_TITLE=RuoYi AI
|
||||
|
||||
# 应用命名空间,用于缓存、store等功能的前缀,确保隔离
|
||||
VITE_APP_NAMESPACE=vben-web-antd
|
||||
@@ -1,7 +0,0 @@
|
||||
# public path
|
||||
VITE_BASE=/
|
||||
|
||||
# Basic interface address SPA
|
||||
VITE_GLOB_API_URL=/api
|
||||
|
||||
VITE_VISUALIZER=true
|
||||
@@ -1,25 +0,0 @@
|
||||
# 端口号
|
||||
VITE_PORT=5666
|
||||
|
||||
VITE_BASE=/
|
||||
# 是否开启 Nitro Mock服务,true 为开启,false 为关闭
|
||||
VITE_NITRO_MOCK=false
|
||||
# 是否打开 devtools,true 为打开,false 为关闭
|
||||
VITE_DEVTOOLS=false
|
||||
# 是否注入全局loading
|
||||
VITE_INJECT_APP_LOADING=true
|
||||
|
||||
# 后台请求路径 具体在vite.config.mts配置代理
|
||||
VITE_GLOB_API_URL=/api
|
||||
|
||||
# 全局加密开关(即开启了加解密功能才会生效 不是全部接口加密 需要和后端对应)
|
||||
VITE_GLOB_ENABLE_ENCRYPT=false
|
||||
# RSA公钥 请求加密使用 注意这两个是两对RSA公私钥 请求加密-后端解密是一对 响应解密-后端加密是一对
|
||||
VITE_GLOB_RSA_PUBLIC_KEY=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==
|
||||
# RSA私钥 响应解密使用 注意这两个是两对RSA公私钥 请求加密-后端解密是一对 响应解密-后端加密是一对
|
||||
VITE_GLOB_RSA_PRIVATE_KEY=MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmc3CuPiGL/LcIIm7zryCEIbl1SPzBkr75E2VMtxegyZ1lYRD+7TZGAPkvIsBcaMs6Nsy0L78n2qh+lIZMpLH8wIDAQABAkEAk82Mhz0tlv6IVCyIcw/s3f0E+WLmtPFyR9/WtV3Y5aaejUkU60JpX4m5xNR2VaqOLTZAYjW8Wy0aXr3zYIhhQQIhAMfqR9oFdYw1J9SsNc+CrhugAvKTi0+BF6VoL6psWhvbAiEAxPPNTmrkmrXwdm/pQQu3UOQmc2vCZ5tiKpW10CgJi8kCIFGkL6utxw93Ncj4exE/gPLvKcT+1Emnoox+O9kRXss5AiAMtYLJDaLEzPrAWcZeeSgSIzbL+ecokmFKSDDcRske6QIgSMkHedwND1olF8vlKsJUGK3BcdtM8w4Xq7BpSBwsloE=
|
||||
# 客户端id
|
||||
VITE_GLOB_APP_CLIENT_ID=e5cd7e4891bf95d1d19206ce24a7b32e
|
||||
|
||||
# 开启SSE
|
||||
VITE_GLOB_SSE_ENABLE=false
|
||||
@@ -1,32 +0,0 @@
|
||||
VITE_BASE=/
|
||||
|
||||
# 是否开启压缩,可以设置为 none, brotli, gzip
|
||||
VITE_COMPRESS=gzip
|
||||
|
||||
# 是否开启 PWA
|
||||
VITE_PWA=false
|
||||
|
||||
# vue-router 的模式
|
||||
VITE_ROUTER_HISTORY=history
|
||||
|
||||
# 是否注入全局loading
|
||||
VITE_INJECT_APP_LOADING=true
|
||||
|
||||
# 打包后是否生成dist.zip
|
||||
VITE_ARCHIVER=true
|
||||
|
||||
# 后端接口地址
|
||||
VITE_GLOB_API_URL=/prod-api
|
||||
|
||||
# 全局加密开关(即开启了加解密功能才会生效 不是全部接口加密 需要和后端对应)
|
||||
VITE_GLOB_ENABLE_ENCRYPT=false
|
||||
# RSA公钥 请求加密使用 注意这两个是两对RSA公私钥 请求加密-后端解密是一对 响应解密-后端加密是一对
|
||||
VITE_GLOB_RSA_PUBLIC_KEY=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==
|
||||
# RSA私钥 响应解密使用 注意这两个是两对RSA公私钥 请求加密-后端解密是一对 响应解密-后端加密是一对
|
||||
VITE_GLOB_RSA_PRIVATE_KEY=MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmc3CuPiGL/LcIIm7zryCEIbl1SPzBkr75E2VMtxegyZ1lYRD+7TZGAPkvIsBcaMs6Nsy0L78n2qh+lIZMpLH8wIDAQABAkEAk82Mhz0tlv6IVCyIcw/s3f0E+WLmtPFyR9/WtV3Y5aaejUkU60JpX4m5xNR2VaqOLTZAYjW8Wy0aXr3zYIhhQQIhAMfqR9oFdYw1J9SsNc+CrhugAvKTi0+BF6VoL6psWhvbAiEAxPPNTmrkmrXwdm/pQQu3UOQmc2vCZ5tiKpW10CgJi8kCIFGkL6utxw93Ncj4exE/gPLvKcT+1Emnoox+O9kRXss5AiAMtYLJDaLEzPrAWcZeeSgSIzbL+ecokmFKSDDcRske6QIgSMkHedwND1olF8vlKsJUGK3BcdtM8w4Xq7BpSBwsloE=
|
||||
# 客户端id
|
||||
VITE_GLOB_APP_CLIENT_ID=e5cd7e4891bf95d1d19206ce24a7b32e
|
||||
|
||||
# 开启SSE
|
||||
VITE_GLOB_SSE_ENABLE=false
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
# 该文件是为了给一个增加环境变量打包的例子
|
||||
# 对应在根目录package.json -> build:antd:test 命令
|
||||
|
||||
VITE_BASE=/
|
||||
|
||||
# 是否开启压缩,可以设置为 none, brotli, gzip
|
||||
VITE_COMPRESS=gzip
|
||||
|
||||
# 是否开启 PWA
|
||||
VITE_PWA=false
|
||||
|
||||
# vue-router 的模式
|
||||
VITE_ROUTER_HISTORY=history
|
||||
|
||||
# 是否注入全局loading
|
||||
VITE_INJECT_APP_LOADING=true
|
||||
|
||||
# 打包后是否生成dist.zip
|
||||
VITE_ARCHIVER=true
|
||||
|
||||
# 后端接口地址
|
||||
VITE_GLOB_API_URL=/test-api
|
||||
|
||||
# 全局加密开关(即开启了加解密功能才会生效 不是全部接口加密 需要和后端对应)
|
||||
VITE_GLOB_ENABLE_ENCRYPT=true
|
||||
# RSA公钥 请求加密使用 注意这两个是两对RSA公私钥 请求加密-后端解密是一对 响应解密-后端加密是一对
|
||||
VITE_GLOB_RSA_PUBLIC_KEY=MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdHnzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==
|
||||
# RSA私钥 响应解密使用 注意这两个是两对RSA公私钥 请求加密-后端解密是一对 响应解密-后端加密是一对
|
||||
VITE_GLOB_RSA_PRIVATE_KEY=MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmc3CuPiGL/LcIIm7zryCEIbl1SPzBkr75E2VMtxegyZ1lYRD+7TZGAPkvIsBcaMs6Nsy0L78n2qh+lIZMpLH8wIDAQABAkEAk82Mhz0tlv6IVCyIcw/s3f0E+WLmtPFyR9/WtV3Y5aaejUkU60JpX4m5xNR2VaqOLTZAYjW8Wy0aXr3zYIhhQQIhAMfqR9oFdYw1J9SsNc+CrhugAvKTi0+BF6VoL6psWhvbAiEAxPPNTmrkmrXwdm/pQQu3UOQmc2vCZ5tiKpW10CgJi8kCIFGkL6utxw93Ncj4exE/gPLvKcT+1Emnoox+O9kRXss5AiAMtYLJDaLEzPrAWcZeeSgSIzbL+ecokmFKSDDcRske6QIgSMkHedwND1olF8vlKsJUGK3BcdtM8w4Xq7BpSBwsloE=
|
||||
# 客户端id
|
||||
VITE_GLOB_APP_CLIENT_ID=e5cd7e4891bf95d1d19206ce24a7b32e
|
||||
|
||||
# 开启SSE
|
||||
VITE_GLOB_SSE_ENABLE=true
|
||||
|
||||
@@ -1,37 +0,0 @@
|
||||
import {defineConfig} from '@vben/vite-config';
|
||||
|
||||
// 自行取消注释来启用按需导入功能
|
||||
// import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers';
|
||||
// import Components from 'unplugin-vue-components/vite';
|
||||
|
||||
export default defineConfig(async () => {
|
||||
return {
|
||||
application: {},
|
||||
vite: {
|
||||
plugins: [
|
||||
// Components({
|
||||
// dirs: [], // 默认会导入src/components目录下所有组件 不需要
|
||||
// dts: './types/components.d.ts', // 输出类型文件
|
||||
// resolvers: [
|
||||
// AntDesignVueResolver({
|
||||
// // 需要排除Button组件 全局已经默认导入了
|
||||
// exclude: ['Button'],
|
||||
// importStyle: false, // css in js
|
||||
// }),
|
||||
// ],
|
||||
// }),
|
||||
],
|
||||
server: {
|
||||
proxy: {
|
||||
'/api': {
|
||||
changeOrigin: true,
|
||||
rewrite: (path) => path.replace(/^\/api/, ''),
|
||||
// mock代理目标地址
|
||||
target: 'http://ruoyi-backend:6039',
|
||||
ws: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
};
|
||||
});
|
||||
@@ -1,174 +0,0 @@
|
||||
--- # 临时文件存储位置 避免临时文件被系统清理报错
|
||||
spring.servlet.multipart.location: /ruoyi/server/temp
|
||||
|
||||
--- # 监控中心配置
|
||||
spring.boot.admin.client:
|
||||
# 增加客户端开关
|
||||
enabled: false
|
||||
url: http://localhost:9090/admin
|
||||
instance:
|
||||
service-host-type: IP
|
||||
username: ruoyi
|
||||
password: 123456
|
||||
|
||||
--- # xxl-job 配置
|
||||
xxl.job:
|
||||
# 执行器开关
|
||||
enabled: false
|
||||
# 调度中心地址:如调度中心集群部署存在多个地址则用逗号分隔。
|
||||
admin-addresses: http://localhost:9100/xxl-job-admin
|
||||
# 执行器通讯TOKEN:非空时启用
|
||||
access-token: xxl-job
|
||||
executor:
|
||||
# 执行器AppName:执行器心跳注册分组依据;为空则关闭自动注册
|
||||
appname: xxl-job-executor
|
||||
# 执行器端口号 执行器从9101开始往后写
|
||||
port: 9101
|
||||
# 执行器注册:默认IP:PORT
|
||||
address:
|
||||
# 执行器IP:默认自动获取IP
|
||||
ip:
|
||||
# 执行器运行日志文件存储磁盘路径
|
||||
logpath: ./logs/xxl-job
|
||||
# 执行器日志文件保存天数:大于3生效
|
||||
logretentiondays: 30
|
||||
|
||||
--- # 数据源配置
|
||||
spring:
|
||||
datasource:
|
||||
type: com.zaxxer.hikari.HikariDataSource
|
||||
# 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
|
||||
dynamic:
|
||||
# 性能分析插件(有性能损耗 不建议生产环境使用)
|
||||
p6spy: false
|
||||
# 设置默认的数据源或者数据源组,默认值即为 master
|
||||
primary: master
|
||||
# 严格模式 匹配不到数据源则报错
|
||||
strict: true
|
||||
datasource:
|
||||
# 主库数据源
|
||||
master:
|
||||
type: ${spring.datasource.type}
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
# jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
|
||||
# rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
|
||||
url: jdbc:mysql://mysql:3306/ruoyi-ai?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
|
||||
username: root
|
||||
password: root
|
||||
# 从库数据源
|
||||
slave:
|
||||
lazy: true
|
||||
type: ${spring.datasource.type}
|
||||
driverClassName: com.mysql.cj.jdbc.Driver
|
||||
url: jdbc:mysql://mysql:3306/ruoyi-ai?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
|
||||
username:
|
||||
password:
|
||||
# oracle:
|
||||
# type: ${spring.datasource.type}
|
||||
# driverClassName: oracle.jdbc.OracleDriver
|
||||
# url: jdbc:oracle:thin:@//localhost:1521/XE
|
||||
# username: ROOT
|
||||
# password: root
|
||||
# hikari:
|
||||
# connectionTestQuery: SELECT 1 FROM DUAL
|
||||
# postgres:
|
||||
# type: ${spring.datasource.type}
|
||||
# driverClassName: org.postgresql.Driver
|
||||
# url: jdbc:postgresql://localhost:5432/postgres?useUnicode=true&characterEncoding=utf8&useSSL=true&autoReconnect=true&reWriteBatchedInserts=true
|
||||
# username: root
|
||||
# password: root
|
||||
# sqlserver:
|
||||
# type: ${spring.datasource.type}
|
||||
# driverClassName: com.microsoft.sqlserver.jdbc.SQLServerDriver
|
||||
# url: jdbc:sqlserver://localhost:1433;DatabaseName=tempdb;SelectMethod=cursor;encrypt=false;rewriteBatchedStatements=true
|
||||
# username: SA
|
||||
# password: root
|
||||
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: redis
|
||||
# 端口,默认为6379
|
||||
port: 6379
|
||||
# 数据库索引
|
||||
database: 0
|
||||
# 密码(如没有密码请注释掉)
|
||||
# password:
|
||||
# 连接超时时间
|
||||
timeout: 10s
|
||||
# 是否开启ssl
|
||||
ssl: false
|
||||
|
||||
redisson:
|
||||
# redis key前缀
|
||||
keyPrefix:
|
||||
# 线程池数量
|
||||
threads: 16
|
||||
# Netty线程池数量
|
||||
nettyThreads: 32
|
||||
# 单节点配置
|
||||
singleServerConfig:
|
||||
# 客户端名称
|
||||
clientName: ${ruoyi.name}
|
||||
# 最小空闲连接数
|
||||
connectionMinimumIdleSize: 32
|
||||
# 连接池大小
|
||||
connectionPoolSize: 64
|
||||
# 连接空闲超时,单位:毫秒
|
||||
idleConnectionTimeout: 10000
|
||||
# 命令等待超时,单位:毫秒
|
||||
timeout: 3000
|
||||
# 发布和订阅连接池大小
|
||||
subscriptionConnectionPoolSize: 50
|
||||
|
||||
--- # mail 邮件发送
|
||||
mail:
|
||||
enabled: false
|
||||
host: smtp.163.com
|
||||
port: 465
|
||||
# 是否需要用户名密码验证
|
||||
auth: true
|
||||
# 发送方,遵循RFC-822标准
|
||||
from: pengpan@163.com
|
||||
# 用户名(注意:如果使用foxmail邮箱,此处user为qq号)
|
||||
user: pengpan@163.com
|
||||
# 密码(注意,某些邮箱需要为SMTP服务单独设置密码,详情查看相关帮助)
|
||||
pass: JXLAASWFNLNNAYJU
|
||||
# 使用 STARTTLS安全连接,STARTTLS是对纯文本通信协议的扩展。
|
||||
starttlsEnable: true
|
||||
# 使用SSL安全连接
|
||||
sslEnable: true
|
||||
# SMTP超时时长,单位毫秒,缺省值不超时
|
||||
timeout: 0
|
||||
# Socket连接超时值,单位毫秒,缺省值不超时
|
||||
connectionTimeout: 0
|
||||
|
||||
--- # sms 短信
|
||||
sms:
|
||||
enabled: false
|
||||
# 阿里云 dysmsapi.aliyuncs.com
|
||||
# 腾讯云 sms.tencentcloudapi.com
|
||||
endpoint: "dysmsapi.aliyuncs.com"
|
||||
accessKeyId: xxxxxxx
|
||||
accessKeySecret: xxxxxx
|
||||
signName: 测试
|
||||
# 腾讯专用
|
||||
sdkAppId:
|
||||
@@ -1,22 +0,0 @@
|
||||
#!/bin/bash
|
||||
rm -f /root/ruoyi-ai-docker/source-code/ruoyi-ai-admin/apps/web-antd/.env.analyze
|
||||
rm -f /root/ruoyi-ai-docker/source-code/ruoyi-ai-admin/apps/web-antd/.env.development
|
||||
rm -f /root/ruoyi-ai-docker/source-code/ruoyi-ai-admin/apps/web-antd/.env.production
|
||||
rm -f /root/ruoyi-ai-docker/source-code/ruoyi-ai-admin/apps/web-antd/.env.test
|
||||
rm -f /root/ruoyi-ai-docker/source-code/ruoyi-ai-admin/apps/web-antd/vite.config.mts
|
||||
|
||||
cp /root/ruoyi-ai-docker/build-docker-images/modify-source-code/ruoyi-ai-admin/.env.analyze /root/ruoyi-ai-docker/source-code/ruoyi-ai-admin/apps/web-antd/
|
||||
cp /root/ruoyi-ai-docker/build-docker-images/modify-source-code/ruoyi-ai-admin/.env.development /root/ruoyi-ai-docker/source-code/ruoyi-ai-admin/apps/web-antd/
|
||||
cp /root/ruoyi-ai-docker/build-docker-images/modify-source-code/ruoyi-ai-admin/.env.production /root/ruoyi-ai-docker/source-code/ruoyi-ai-admin/apps/web-antd/
|
||||
cp /root/ruoyi-ai-docker/build-docker-images/modify-source-code/ruoyi-ai-admin/.env.test /root/ruoyi-ai-docker/source-code/ruoyi-ai-admin/apps/web-antd/
|
||||
cp /root/ruoyi-ai-docker/build-docker-images/modify-source-code/ruoyi-ai-admin/vite.config.mts /root/ruoyi-ai-docker/source-code/ruoyi-ai-admin/apps/web-antd/
|
||||
|
||||
docker run --rm --name build-ruoyi-ai-admin -v /root/ruoyi-ai-docker/source-code/ruoyi-ai-admin:/app -w /app node:20 bash -c "npm install -g pnpm && pnpm install && pnpm build"
|
||||
|
||||
rm -f /root/ruoyi-ai-docker/build-docker-images/Dockerfile-Resources/ruoyi-ai-admin/dist.zip
|
||||
cp /root/ruoyi-ai-docker/source-code/ruoyi-ai-admin/apps/web-antd/dist.zip /root/ruoyi-ai-docker/build-docker-images/Dockerfile-Resources/ruoyi-ai-admin/
|
||||
cd /root/ruoyi-ai-docker/build-docker-images/Dockerfile-Resources/ruoyi-ai-admin/
|
||||
rm -rf dist
|
||||
unzip dist.zip -d dist
|
||||
rm -f dist.zip
|
||||
docker build -t ruoyi-ai-admin:v2.0.5 .
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/bin/bash
|
||||
rm -f /root/ruoyi-ai-docker/source-code/ruoyi-ai-backend/ruoyi-admin/src/main/resources/application-prod.yml
|
||||
cp /root/ruoyi-ai-docker/build-docker-images/modify-source-code/ruoyi-ai-backend/application-prod.yml /root/ruoyi-ai-docker/source-code/ruoyi-ai-backend/ruoyi-admin/src/main/resources/application-prod.yml
|
||||
docker run --rm --name build-ruoyi-ai-backend -v /root/ruoyi-ai-docker/source-code/ruoyi-ai-backend:/app -w /app maven:3.9.9-eclipse-temurin-17-alpine bash -c "mvn clean package -Pprod"
|
||||
rm -f /root/ruoyi-ai-docker/build-docker-images/Dockerfile-Resources/ruoyi-ai-backend/ruoyi-admin.jar
|
||||
cp /root/ruoyi-ai-docker/source-code/ruoyi-ai-backend/ruoyi-admin/target/ruoyi-admin.jar /root/ruoyi-ai-docker/build-docker-images/Dockerfile-Resources/ruoyi-ai-backend/
|
||||
cd /root/ruoyi-ai-docker/build-docker-images/Dockerfile-Resources/ruoyi-ai-backend/
|
||||
docker build -t ruoyi-ai-backend:v2.0.5 .
|
||||
@@ -1,6 +0,0 @@
|
||||
#!/bin/bash
|
||||
docker run --rm --name build-ruoyi-ai-web -v /root/ruoyi-ai-docker/source-code/ruoyi-ai-web:/app -w /app node:20 bash -c "npm install -g pnpm && pnpm install && pnpm approve-builds && pnpm build"
|
||||
rm -rf /root/ruoyi-ai-docker/build-docker-images/Dockerfile-Resources/ruoyi-ai-web/dist
|
||||
cp -pr /root/ruoyi-ai-docker/source-code/ruoyi-ai-web/dist /root/ruoyi-ai-docker/build-docker-images/Dockerfile-Resources/ruoyi-ai-web/
|
||||
cd /root/ruoyi-ai-docker/build-docker-images/Dockerfile-Resources/ruoyi-ai-web/
|
||||
docker build -t ruoyi-ai-web:v2.0.5 .
|
||||
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -i 's/[ \t]*$//' filename
|
||||
@@ -1,37 +0,0 @@
|
||||
# Timezone
|
||||
TZ=Asia/Shanghai
|
||||
|
||||
# MySQL Configuration
|
||||
MYSQL_ROOT_PASSWORD=root
|
||||
MYSQL_DATABASE=ruoyi-ai
|
||||
MYSQL_PORT=3306
|
||||
|
||||
# Redis Configuration
|
||||
REDIS_PORT=6379
|
||||
REDIS_PASSWORD=
|
||||
REDIS_DATABASE=0
|
||||
REDIS_TIMEOUT=10s
|
||||
|
||||
# Weaviate Configuration
|
||||
WEAVIATE_QUERY_LIMIT=25
|
||||
WEAVIATE_ANONYMOUS_ACCESS=true
|
||||
WEAVIATE_DATA_PATH=/var/lib/weaviate
|
||||
WEAVIATE_VECTORIZER_MODULE=none
|
||||
WEAVIATE_MODULES=text2vec-cohere,text2vec-huggingface,text2vec-palm,text2vec-openai,generative-openai,generative-cohere,generative-palm,ref2vec-centroid,reranker-cohere,qna-openai
|
||||
WEAVIATE_CLUSTER_HOSTNAME=node1
|
||||
WEAVIATE_PROTOCOL=http
|
||||
WEAVIATE_HOST=weaviate:8080
|
||||
WEAVIATE_CLASSNAME=LocalKnowledge
|
||||
|
||||
# Backend Configuration
|
||||
BACKEND_SERVER_PORT=6039
|
||||
DB_URL=jdbc:mysql://mysql:3306/ruoyi-ai?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true
|
||||
DB_USERNAME=root
|
||||
DB_PASSWORD=root
|
||||
REDIS_HOST=redis
|
||||
|
||||
# Admin Configuration
|
||||
ADMIN_SERVER_PORT=8082
|
||||
|
||||
# Web Configuration
|
||||
WEB_SERVER_PORT=8081
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
rm -f /root/ruoyi-ai-docker/deploy/mysql-init/*.sql
|
||||
cp /root/ruoyi-ai-docker/source-code/ruoyi-ai-backend/script/sql/ruoyi-ai.sql /root/ruoyi-ai-docker/deploy/mysql-init/ruoyi-ai.sql
|
||||
|
||||
@@ -1,122 +0,0 @@
|
||||
version: '3'
|
||||
|
||||
services:
|
||||
mysql:
|
||||
image: 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: 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: semitechnologies/weaviate:1.30.0
|
||||
container_name: ruoyi-ai-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
|
||||
ports:
|
||||
- "50050:8080"
|
||||
- "50051:50051"
|
||||
volumes:
|
||||
- ./data/weaviate:/var/lib/weaviate
|
||||
restart: always
|
||||
networks:
|
||||
- ruoyi-net
|
||||
|
||||
minio:
|
||||
image: minio/minio
|
||||
container_name: ruoyi-ai-minio
|
||||
ports:
|
||||
- "9000:9000"
|
||||
- "9090:9090"
|
||||
environment:
|
||||
- MINIO_ACCESS_KEY=ruoyi
|
||||
- MINIO_SECRET_KEY=ruoyi123
|
||||
volumes:
|
||||
- ./data/minio:/data
|
||||
- ./data/minio-config:/root/.minio
|
||||
command: server /data --console-address ":9090"
|
||||
restart: always
|
||||
networks:
|
||||
- ruoyi-net
|
||||
|
||||
ruoyi-backend:
|
||||
image: ruoyi-ai-backend:v2.0.5
|
||||
container_name: ruoyi-ai-backend
|
||||
env_file:
|
||||
- ./.env
|
||||
ports:
|
||||
- "${BACKEND_SERVER_PORT}:${BACKEND_SERVER_PORT}"
|
||||
volumes:
|
||||
- ./data/logs:/ruoyi/server/logs
|
||||
restart: always
|
||||
depends_on:
|
||||
- mysql
|
||||
- redis
|
||||
networks:
|
||||
- ruoyi-net
|
||||
|
||||
ruoyi-admin:
|
||||
image: ruoyi-ai-admin:v2.0.5
|
||||
container_name: ruoyi-ai-admin
|
||||
ports:
|
||||
#- "8082:80"
|
||||
- "${ADMIN_SERVER_PORT}:80"
|
||||
restart: always
|
||||
depends_on:
|
||||
- ruoyi-backend
|
||||
networks:
|
||||
- ruoyi-net
|
||||
|
||||
ruoyi-web:
|
||||
image: ruoyi-ai-web:v2.0.5
|
||||
container_name: ruoyi-ai-web
|
||||
ports:
|
||||
#- "8081:80"
|
||||
- "${WEB_SERVER_PORT}:80"
|
||||
restart: always
|
||||
depends_on:
|
||||
- ruoyi-backend
|
||||
networks:
|
||||
- ruoyi-net
|
||||
|
||||
networks:
|
||||
ruoyi-net:
|
||||
driver: bridge
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,2 +0,0 @@
|
||||
#!/bin/bash
|
||||
sed -i 's#127.0.0.1:6038#weaviate:8080#g' ./mysql-init/ruoyi-ai.sql
|
||||
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
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,50 +0,0 @@
|
||||
# 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}}
|
||||
@@ -1,89 +0,0 @@
|
||||
---
|
||||
# 数据源配置
|
||||
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: '*'
|
||||
@@ -1,115 +0,0 @@
|
||||
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
|
||||
@@ -1,22 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -1,22 +0,0 @@
|
||||
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;
|
||||
}
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
rm -rf ruoyi-ai-admin
|
||||
git clone https://github.com/ageerle/ruoyi-admin
|
||||
mv ruoyi-admin ruoyi-ai-admin
|
||||
@@ -1,7 +0,0 @@
|
||||
#!/bin/bash
|
||||
rm -rf ruoyi-ai-backend
|
||||
git clone https://github.com/ageerle/ruoyi-ai
|
||||
mv ruoyi-ai ruoyi-ai-backend
|
||||
cd ruoyi-ai-backend
|
||||
# git checkout v2.0.4
|
||||
# cd ..
|
||||
@@ -1,4 +0,0 @@
|
||||
#!/bin/bash
|
||||
rm -rf ruoyi-ai-web
|
||||
git clone https://github.com/ageerle/ruoyi-web
|
||||
mv ruoyi-web ruoyi-ai-web
|
||||
@@ -1,28 +0,0 @@
|
||||
---
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
minio:
|
||||
image: minio/minio
|
||||
container_name: minio
|
||||
ports:
|
||||
- "9000:9000"
|
||||
- "9090:9090"
|
||||
environment:
|
||||
- MINIO_ACCESS_KEY=ruoyi
|
||||
- MINIO_SECRET_KEY=ruoyi123
|
||||
volumes:
|
||||
- minio_data:/data
|
||||
- minio_config:/root/.minio
|
||||
command: server /data --console-address ":9090"
|
||||
restart: always
|
||||
networks:
|
||||
- minio-net
|
||||
|
||||
networks:
|
||||
minio-net:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
minio_data:
|
||||
minio_config:
|
||||
@@ -1,65 +0,0 @@
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
neo4j:
|
||||
image: neo4j:5.15.0
|
||||
container_name: ruoyi-neo4j
|
||||
restart: unless-stopped
|
||||
ports:
|
||||
# HTTP端口
|
||||
- "7474:7474"
|
||||
# HTTPS端口
|
||||
- "7473:7473"
|
||||
# Bolt端口
|
||||
- "7687:7687"
|
||||
environment:
|
||||
# 初始密码设置(首次启动后需要修改)
|
||||
- NEO4J_AUTH=neo4j/your_password
|
||||
# 接受许可协议
|
||||
- NEO4J_ACCEPT_LICENSE_AGREEMENT=yes
|
||||
# 内存配置(根据服务器配置调整)
|
||||
- NEO4J_dbms_memory_heap_initial__size=512m
|
||||
- NEO4J_dbms_memory_heap_max__size=2g
|
||||
- NEO4J_dbms_memory_pagecache_size=1g
|
||||
# 事务日志配置
|
||||
- NEO4J_dbms_tx__log_rotation_retention__policy=3 days
|
||||
# 允许从任何主机连接
|
||||
- NEO4J_dbms_default__listen__address=0.0.0.0
|
||||
# 启用APOC插件
|
||||
- NEO4J_dbms_security_procedures_unrestricted=apoc.*
|
||||
- NEO4J_dbms_security_procedures_allowlist=apoc.*
|
||||
# 日志级别
|
||||
- NEO4J_dbms_logs_debug_level=INFO
|
||||
volumes:
|
||||
# 数据持久化
|
||||
- neo4j_data:/data
|
||||
# 日志持久化
|
||||
- neo4j_logs:/logs
|
||||
# 导入目录
|
||||
- neo4j_import:/var/lib/neo4j/import
|
||||
# 插件目录
|
||||
- neo4j_plugins:/plugins
|
||||
networks:
|
||||
- ruoyi-network
|
||||
healthcheck:
|
||||
test: [ "CMD-SHELL", "wget --no-verbose --tries=1 --spider localhost:7474 || exit 1" ]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
start_period: 40s
|
||||
|
||||
volumes:
|
||||
neo4j_data:
|
||||
name: ruoyi-neo4j-data
|
||||
neo4j_logs:
|
||||
name: ruoyi-neo4j-logs
|
||||
neo4j_import:
|
||||
name: ruoyi-neo4j-import
|
||||
neo4j_plugins:
|
||||
name: ruoyi-neo4j-plugins
|
||||
|
||||
networks:
|
||||
ruoyi-network:
|
||||
name: ruoyi-network
|
||||
driver: bridge
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
---
|
||||
services:
|
||||
weaviate:
|
||||
command:
|
||||
- --host
|
||||
- 0.0.0.0
|
||||
- --port
|
||||
- '6038'
|
||||
- --scheme
|
||||
- http
|
||||
image: semitechnologies/weaviate:1.19.7
|
||||
ports:
|
||||
- 6038:6038
|
||||
- 50051:50051
|
||||
volumes:
|
||||
- weaviate_data:/var/lib/weaviate
|
||||
environment:
|
||||
QUERY_DEFAULTS_LIMIT: 25
|
||||
AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED: 'true'
|
||||
PERSISTENCE_DATA_PATH: '/var/lib/weaviate'
|
||||
DEFAULT_VECTORIZER_MODULE: 'none'
|
||||
CLUSTER_HOSTNAME: 'node1'
|
||||
volumes:
|
||||
weaviate_data:
|
||||
...
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,162 +0,0 @@
|
||||
# 数据库开发规范
|
||||
|
||||
## 1. 建表规约
|
||||
|
||||
### 1.1 表命名规范
|
||||
|
||||
**【强制】** 表名、字段名必须使用小写字母或数字,禁止出现数字开头,禁止两个下划线中间只出现数字。
|
||||
|
||||
**【强制】** 表名采用 `业务-模块-功能` 的命名方式,使用下划线分隔。
|
||||
|
||||
**正例:**
|
||||
|
||||
```sql
|
||||
-- 聊天业务-配置模块-配置功能
|
||||
chat_config
|
||||
|
||||
-- 聊天业务-消息模块-消息功能
|
||||
chat_message
|
||||
|
||||
-- 聊天业务-模型模块-模型功能
|
||||
chat_model
|
||||
|
||||
-- 系统业务-用户模块-用户功能
|
||||
sys_user
|
||||
|
||||
-- 系统业务-角色模块-角色功能
|
||||
sys_role
|
||||
|
||||
-- 知识库业务-角色模块-角色功能
|
||||
knowledge_role
|
||||
```
|
||||
|
||||
**反例:**
|
||||
|
||||
```sql
|
||||
-- 不规范的命名
|
||||
chatConfig
|
||||
ChatMessage
|
||||
chat-model
|
||||
user1
|
||||
2user
|
||||
user__info
|
||||
```
|
||||
|
||||
### 1.2 字段命名规范
|
||||
|
||||
**【强制】** 字段名必须使用小写字母或数字,使用下划线分隔。
|
||||
|
||||
**【推荐】** 表达是与否概念的字段,必须使用 `is_xxx` 的方式命名,数据类型是 `char(1)`,1 表示是,0 表示否。
|
||||
|
||||
**正例:** `is_deleted`、`is_enabled`
|
||||
|
||||
## 2. 公共字段规范
|
||||
|
||||
### 2.1 必备公共字段
|
||||
|
||||
**【推荐】** 表增加以下公共字段:
|
||||
|
||||
| 字段名 | 类型 | 默认值 | 说明 | 是否必须 |
|
||||
|---------------|----------------|----------------|---------------|-------|
|
||||
| `id` | `bigint(20)` | AUTO_INCREMENT | 主键ID | 是 |
|
||||
| `create_time` | `datetime` | NULL | 创建时间 | 是 |
|
||||
| `update_time` | `datetime` | NULL | 更新时间 | 是 |
|
||||
| `create_by` | `bigint(20)` | NULL | 创建者ID | 是 |
|
||||
| `update_by` | `bigint(20)` | NULL | 更新者ID | 是 |
|
||||
| `create_dept` | `bigint(20)` | NULL | 创建部门ID | 是 |
|
||||
| `del_flag` | `char(1)` | '0' | 删除标志(0存在 1删除) | 推荐 |
|
||||
| `tenant_id` | `varchar(20)` | '000000' | 租户编号 | 多租户必须 |
|
||||
| `remark` | `varchar(500)` | NULL | 备注 | 是 |
|
||||
| `version` | `int(11)` | NULL | 版本号(乐观锁) | 可选 |
|
||||
|
||||
### 2.2 公共字段说明
|
||||
|
||||
- **`id`**: 主键,使用雪花算法生成的 bigint 类型
|
||||
- **`create_time`**: 记录创建时间,便于数据追踪和审计
|
||||
- **`update_time`**: 记录最后更新时间,便于数据同步和缓存失效
|
||||
- **`create_by`**: 创建者用户ID,便于权限控制和数据追溯
|
||||
- **`update_by`**: 更新者用户ID,便于操作审计
|
||||
- **`del_flag`**: 逻辑删除标志,0表示正常,1表示删除
|
||||
- **`tenant_id`**: 租户隔离字段,支持多租户架构
|
||||
- **`remark`**: 备注信息,便于业务说明
|
||||
|
||||
## 3. SQL 更新管理规范
|
||||
|
||||
### 3.1 目录结构
|
||||
|
||||
```
|
||||
script/
|
||||
├── sql/
|
||||
│ ├── ruoyi-ai.sql # 初始化SQL文件
|
||||
│ └── update/ # 增量更新SQL目录
|
||||
│ ├── 2024-05-24-chat-message-billing-type.sql
|
||||
│ ├── 2024-07-13-chat-model-priority.sql
|
||||
│ └── 2024-08-15-knowledge-role-bak.sql
|
||||
└── deploy/
|
||||
└── deploy/
|
||||
└── mysql-init/
|
||||
└── ruoyi-ai.sql # Docker初始化SQL(与主文件同步)
|
||||
```
|
||||
|
||||
### 3.2 更新SQL规范
|
||||
|
||||
**【强制】** 增量更新SQL文件必须放在 `script/sql/update/` 目录下。
|
||||
|
||||
**【强制】** 更新SQL文件命名格式:`YYYY-MM-DD-功能描述.sql`
|
||||
|
||||
**正例:**
|
||||
|
||||
```
|
||||
2024-05-24-chat-message-billing-type.sql
|
||||
2024-07-13-chat-model-priority.sql
|
||||
2024-08-15-knowledge-role-backup.sql
|
||||
```
|
||||
|
||||
**【强制】** 每个更新SQL文件必须包含:
|
||||
|
||||
- 文件头部注释说明变更内容
|
||||
- 变更日期和负责人
|
||||
- 具体的DDL/DML语句
|
||||
|
||||
**正例:**
|
||||
|
||||
```sql
|
||||
-- 为 chat_message 表添加 billing_type 字段
|
||||
-- 变更日期: 2024-05-24
|
||||
-- 负责人: 张三
|
||||
-- 说明: 支持消息计费类型区分
|
||||
|
||||
ALTER TABLE chat_message
|
||||
ADD COLUMN billing_type char NULL COMMENT '计费类型(1-token计费,2-次数计费,null-普通消息)';
|
||||
```
|
||||
|
||||
### 3.3 部署流程
|
||||
|
||||
#### 3.3.1 首次部署
|
||||
|
||||
**【强制】** 首次初始化项目只需要执行:
|
||||
|
||||
```bash
|
||||
mysql -u root -p database_name < script/sql/ruoyi-ai.sql
|
||||
```
|
||||
|
||||
#### 3.3.2 增量更新
|
||||
|
||||
**【强制】** 代码更新时,按日期顺序执行 `script/sql/update/` 下的补丁SQL:
|
||||
|
||||
```bash
|
||||
# 按文件名日期顺序执行
|
||||
mysql -u root -p database_name < script/sql/update/2024-05-24-chat-message-billing-type.sql
|
||||
mysql -u root -p database_name < script/sql/update/2024-07-13-chat-model-priority.sql
|
||||
```
|
||||
|
||||
#### 3.3.3 同步更新
|
||||
|
||||
**【强制】** 当数据库发生变化时,必须同时完成以下操作:
|
||||
|
||||
1. 在 `script/sql/update/` 下添加增量SQL补丁
|
||||
2. 将变更同步更新到初始化文件 `script/sql/ruoyi-ai.sql`
|
||||
|
||||
---
|
||||
>
|
||||
> 最后更新时间:2025-11-07
|
||||
Reference in New Issue
Block a user