diff --git a/docker-compose-cloud.yml b/docker-compose-cloud.yml
index 7932ecab7..ff5309e33 100644
--- a/docker-compose-cloud.yml
+++ b/docker-compose-cloud.yml
@@ -18,14 +18,14 @@ services:
--max_allowed_packet=128M
--default-authentication-plugin=caching_sha2_password
ports:
- - 3306:3306
+ - 13306:3306
networks:
- jeecg-boot
jeecg-boot-redis:
image: registry.cn-hangzhou.aliyuncs.com/jeecgdocker/redis:5.0
- ports:
- - 6379:6379
+# ports:
+# - 6379:6379
restart: always
hostname: jeecg-boot-redis
container_name: jeecg-boot-redis
@@ -121,6 +121,7 @@ services:
jeecg-vue:
build:
context: ./jeecgboot-vue3
+ dockerfile: Dockerfile.cloud
container_name: jeecgboot-vue3-nginx
image: jeecgboot-vue3
depends_on:
diff --git a/docker-compose.yml b/docker-compose.yml
index 994ed1310..d981d790f 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -18,14 +18,14 @@ services:
--max_allowed_packet=128M
--default-authentication-plugin=caching_sha2_password
ports:
- - 3306:3306
+ - 13306:3306
networks:
- jeecg-boot
jeecg-boot-redis:
image: registry.cn-hangzhou.aliyuncs.com/jeecgdocker/redis:5.0
- ports:
- - 6379:6379
+ # ports:
+ # - 3792:6379
restart: always
hostname: jeecg-boot-redis
container_name: jeecg-boot-redis
diff --git a/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-docker.yml b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-docker.yml
new file mode 100644
index 000000000..a60e3cec7
--- /dev/null
+++ b/jeecg-boot/jeecg-module-system/jeecg-system-start/src/main/resources/application-docker.yml
@@ -0,0 +1,329 @@
+server:
+ port: 8080
+ undertow:
+ decode-url: true # 启用URL解码
+ # max-http-post-size: 10MB # 平替 tomcat server.tomcat.max-swallow-siz, undertow该值默认为-1
+ worker-threads: 16 # 4核CPU标准配置
+ buffers:
+ websocket: 8192 # WebSocket缓冲 以字节为单位,这里设置为8 KB
+ io: 16384 # IO操作缓冲 以字节为单位,这里设置为16 KB
+ error:
+ include-exception: true
+ include-stacktrace: ALWAYS
+ include-message: ALWAYS
+ servlet:
+ context-path: /jeecg-boot
+ compression:
+ enabled: true
+ min-response-size: 1024
+ mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
+
+management:
+ endpoints:
+ web:
+ exposure:
+ include: metrics,jeecghttptrace
+
+spring:
+ flyway:
+ # 是否启用flyway
+ enabled: true
+ # 是否关闭要清除已有库下的表功能,生产环境必须为true,否则会删库,非常重要!!!
+ clean-disabled: true
+ servlet:
+ multipart:
+ max-file-size: 10MB
+ max-request-size: 10MB
+ mail:
+ # 定时任务发送邮件
+ timeJobSend: false
+ host: smtp.163.com
+ username: jeecgos@163.com
+ password: ??
+ properties:
+ mail.smtp.timeout: 10000 # 连接超时(毫秒)
+ mail.smtp.connectiontimeout: 10000 # 连接超时(毫秒)
+ mail.smtp.writetimeout: 10000 # 写入超时(毫秒)
+ mail.smtp.auth: true
+ smtp.ssl.enable: true
+ mail.debug: true # 启用调试模式(查看详细日志)
+ ## quartz定时任务,采用数据库方式
+ quartz:
+ job-store-type: jdbc
+ jdbc:
+ initialize-schema: embedded
+ #定时任务启动开关,true-开 false-关
+ auto-startup: true
+ #延迟1秒启动定时任务
+ startup-delay: 1s
+ #启动时更新己存在的Job
+ overwrite-existing-jobs: true
+ properties:
+ org:
+ quartz:
+ scheduler:
+ instanceName: MyScheduler
+ instanceId: AUTO
+ jobStore:
+ class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
+ driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
+ tablePrefix: QRTZ_
+ isClustered: true
+ misfireThreshold: 12000
+ clusterCheckinInterval: 15000
+ threadPool:
+ class: org.quartz.simpl.SimpleThreadPool
+ threadCount: 10
+ threadPriority: 5
+ threadsInheritContextClassLoaderOfInitializingThread: true
+ #json 时间戳统一转换
+ jackson:
+ date-format: yyyy-MM-dd HH:mm:ss
+ time-zone: GMT+8
+ jpa:
+ open-in-view: false
+ aop:
+ proxy-target-class: true
+ #配置freemarker
+ freemarker:
+ # 设置模板后缀名
+ suffix: .ftl
+ # 设置文档类型
+ content-type: text/html
+ # 设置页面编码格式
+ charset: UTF-8
+ # 设置页面缓存
+ cache: false
+ prefer-file-system-access: false
+ # 设置ftl文件路径
+ template-loader-path:
+ - classpath:/templates
+ template_update_delay: 0
+ # 设置静态文件路径,js,css等
+ mvc:
+ static-path-pattern: /**
+ #Spring Boot 2.6+后映射匹配的默认策略已从AntPathMatcher更改为PathPatternParser,需要手动指定为ant-path-matcher
+ pathmatch:
+ matching-strategy: ant_path_matcher
+ resource:
+ static-locations: classpath:/static/,classpath:/public/
+ autoconfigure:
+ exclude:
+ - com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
+ - org.springframework.boot.autoconfigure.flyway.FlywayAutoConfiguration
+ datasource:
+ druid:
+ stat-view-servlet:
+ enabled: true
+ loginUsername: admin
+ loginPassword: 123456
+ allow:
+ web-stat-filter:
+ enabled: true
+ dynamic:
+ druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
+ # 连接池的配置信息
+ # 初始化大小,最小,最大
+ initial-size: 5
+ min-idle: 5
+ maxActive: 1000
+ # 配置获取连接等待超时的时间
+ maxWait: 60000
+ # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
+ timeBetweenEvictionRunsMillis: 60000
+ # 配置一个连接在池中最小生存的时间,单位是毫秒
+ minEvictableIdleTimeMillis: 300000
+ validationQuery: SELECT 1
+ testWhileIdle: true
+ testOnBorrow: false
+ testOnReturn: false
+ # 打开PSCache,并且指定每个连接上PSCache的大小
+ poolPreparedStatements: true
+ maxPoolPreparedStatementPerConnectionSize: 20
+ # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
+ filters: stat,wall,slf4j
+ # 允许SELECT语句的WHERE子句是一个永真条件
+ wall:
+ selectWhereAlwayTrueCheck: false
+ # 打开mergeSql功能;慢SQL记录
+ stat:
+ merge-sql: false
+ slow-sql-millis: 5000
+ datasource:
+ master:
+ url: jdbc:mysql://jeecg-boot-mysql:3306/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+ username: root
+ password: root
+ driver-class-name: com.mysql.cj.jdbc.Driver
+ # 多数据源配置
+ #multi-datasource1:
+ #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
+ #username: root
+ #password: root
+ #driver-class-name: com.mysql.cj.jdbc.Driver
+ #redis 配置
+ redis:
+ database: 0
+ host: jeecg-boot-redis
+ port: 6379
+ password: ''
+#mybatis plus 设置
+mybatis-plus:
+ mapper-locations: classpath*:org/jeecg/**/xml/*Mapper.xml
+ global-config:
+ # 关闭MP3.0自带的banner
+ banner: false
+ db-config:
+ #主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
+ id-type: ASSIGN_ID
+ # 默认数据库表下划线命名
+ table-underline: true
+ configuration:
+ # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
+ #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
+ # 返回类型为Map,显示null对应的字段
+ call-setters-on-nulls: true
+#jeecg专用配置
+minidao:
+ base-package: org.jeecg.modules.jmreport.*,org.jeecg.modules.drag.*
+jeecg:
+ # AI集成
+ ai-chat:
+ enabled: true
+ model: deepseek-chat
+ apiKey: ??
+ apiHost: https://api.deepseek.com/v1
+ timeout: 60
+ # AIRag向量库
+ ai-rag:
+ embed-store:
+ host: 127.0.0.1
+ port: 5432
+ database: postgres
+ user: postgres
+ password: postgres
+ table: embeddings
+ # 平台上线安全配置
+ firewall:
+ # 数据源安全 (开启后,Online报表和图表的数据源为必填)
+ dataSourceSafe: false
+ # 低代码模式(dev:开发模式,prod:发布模式——关闭所有在线开发配置能力)
+ lowCodeMode: dev
+ # 签名密钥串(前后端要一致,正式发布请自行修改)
+ signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a
+ #签名拦截接口
+ signUrls: /sys/dict/getDictItems/*,/sys/dict/loadDict/*,/sys/dict/loadDictOrderByValue/*,/sys/dict/loadDictItem/*,/sys/dict/loadTreeData,/sys/api/queryTableDictItemsByCode,/sys/api/queryFilterTableDictInfo,/sys/api/queryTableDictByKeys,/sys/api/translateDictFromTable,/sys/api/translateDictFromTableByKeys,/sys/sendChangePwdSms,/sys/user/sendChangePhoneSms,/sys/sms,/desform/api/sendVerifyCode
+ # 本地:local、Minio:minio、阿里云:alioss
+ uploadType: local
+ # 前端访问地址
+ domainUrl:
+ pc: http://localhost:3100
+ app: http://localhost:8051
+ path:
+ #文件上传根目录 设置
+ upload: /opt/upFiles
+ #webapp文件路径
+ webapp: /opt/webapp
+ shiro:
+ excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/bigscreen/category/**,/bigscreen/visual/**,/bigscreen/map/**,/jmreport/bigscreen2/**
+ #阿里云oss存储和大鱼短信秘钥配置
+ oss:
+ accessKey: ??
+ secretKey: ??
+ endpoint: oss-cn-beijing.aliyuncs.com
+ bucketName: jeecgdev
+ # 短信模板
+ sms-template:
+ # 签名
+ signature:
+ # 模板code
+ templateCode:
+ # 登录短信、忘记密码模板编码
+ SMS_175435174:
+ # 修改密码短信模板编码
+ SMS_465391221:
+ # 注册账号短信模板编码
+ SMS_175430166:
+ # 在线预览文件服务器地址配置
+ file-view-domain: http://fileview.jeecg.com
+ # minio文件上传
+ minio:
+ minio_url: http://minio.jeecg.com
+ minio_name: ??
+ minio_pass: ??
+ bucketName: otatest
+ #大屏报表参数设置
+ jmreport:
+ #多租户模式,默认值为空(created:按照创建人隔离、tenant:按照租户隔离) (v1.6.2+ 新增)
+ saasMode:
+ # 平台上线安全配置(v1.6.2+ 新增)
+ firewall:
+ # 数据源安全 (开启后,不允许使用平台数据源、SQL解析加签并且不允许查询数据库)
+ dataSourceSafe: false
+ # 低代码开发模式(dev:开发模式,prod:发布模式—关闭在线报表设计功能,分配角色admin、lowdeveloper可以放开限制)
+ lowCodeMode: dev
+ #xxl-job配置
+ xxljob:
+ enabled: false
+ adminAddresses: http://127.0.0.1:9080/xxl-job-admin
+ appname: ${spring.application.name}
+ accessToken: ''
+ address: 127.0.0.1:30007
+ ip: 127.0.0.1
+ port: 30007
+ logPath: logs/jeecg/job/jobhandler/
+ logRetentionDays: 30
+ #分布式锁配置
+ redisson:
+ address: jeecg-boot-redis:6379
+ password:
+ type: STANDALONE
+ enabled: true
+ # 百度开放API配置
+ baidu-api:
+ app-id: ??
+ api-key: ??
+ secret-key: ??
+#cas单点登录
+cas:
+ prefixUrl: http://cas.example.org:8443/cas
+#Mybatis输出sql日志
+logging:
+ level:
+ org.flywaydb: debug
+ org.jeecg.modules.system.mapper: info
+#swagger
+knife4j:
+ #开启增强配置
+ enable: true
+ #开启生产环境屏蔽
+ production: false
+ basic:
+ enable: false
+ username: jeecg
+ password: jeecg1314
+#第三方登录
+justauth:
+ enabled: true
+ type:
+ GITHUB:
+ client-id: ??
+ client-secret: ??
+ redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/github/callback
+ WECHAT_ENTERPRISE:
+ client-id: ??
+ client-secret: ??
+ redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_enterprise/callback
+ agent-id: ??
+ DINGTALK:
+ client-id: ??
+ client-secret: ??
+ redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/dingtalk/callback
+ WECHAT_OPEN:
+ client-id: ??
+ client-secret: ??
+ redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_open/callback
+ cache:
+ type: default
+ prefix: 'demo::'
+ timeout: 1h
diff --git a/jeecg-boot/pom.xml b/jeecg-boot/pom.xml
index a71018c90..fbfe31a53 100644
--- a/jeecg-boot/pom.xml
+++ b/jeecg-boot/pom.xml
@@ -591,6 +591,24 @@
+
+
+ docker
+
+
+ docker
+
+ jeecg-boot-nacos:8848
+
+
+
+ DEFAULT_GROUP
+
+
+
+
+
+
prod
diff --git a/jeecgboot-vue3/.env.docker b/jeecgboot-vue3/.env.docker
new file mode 100644
index 000000000..74f6ee81d
--- /dev/null
+++ b/jeecgboot-vue3/.env.docker
@@ -0,0 +1,34 @@
+# 是否启用mock
+VITE_USE_MOCK = false
+
+# 发布路径
+VITE_PUBLIC_PATH = /
+
+# 是否启用gzip或brotli压缩
+# 选项值: gzip | brotli | none
+# 如果需要多个可以使用“,”分隔
+VITE_BUILD_COMPRESS = 'gzip'
+
+# 使用压缩时是否删除原始文件,默认为false
+VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false
+
+#后台接口父地址(必填)
+VITE_GLOB_API_URL=/jeecgboot
+
+#后台接口全路径地址(必填)
+VITE_GLOB_DOMAIN_URL=http://jeecg-boot-system:8080/jeecg-boot
+
+# 接口父路径前缀
+VITE_GLOB_API_URL_PREFIX=
+
+
+# 填写后将作为乾坤子应用启动,主应用注册时AppName需保持一致(放开 VITE_GLOB_QIANKUN_MICRO_APP_NAME 参数表示jeecg-vue3将以乾坤子应用模式启动)
+#VITE_GLOB_QIANKUN_MICRO_APP_NAME=jeecg-vue3
+# 作为乾坤子应用启动时必填,需与qiankun主应用注册子应用时填写的 entry 保持一致
+#VITE_GLOB_QIANKUN_MICRO_APP_ENTRY=//qiankun.boot3.jeecg.com/jeecg-vue3
+
+# 全局隐藏哪些布局。可选属性:sider,header,multi-tabs;多个用逗号隔开
+#VITE_GLOB_HIDE_LAYOUT_TYPES=sider,header,multi-tabs
+
+# 在线文档编辑版本。可选属性:wps, offlineWps(离线版), onlyoffice
+VITE_GLOB_ONLINE_DOCUMENT_VERSION=wps
diff --git a/jeecgboot-vue3/.env.dockercloud b/jeecgboot-vue3/.env.dockercloud
new file mode 100644
index 000000000..d7193988a
--- /dev/null
+++ b/jeecgboot-vue3/.env.dockercloud
@@ -0,0 +1,34 @@
+# 是否启用mock
+VITE_USE_MOCK = false
+
+# 发布路径
+VITE_PUBLIC_PATH = /
+
+# 是否启用gzip或brotli压缩
+# 选项值: gzip | brotli | none
+# 如果需要多个可以使用“,”分隔
+VITE_BUILD_COMPRESS = 'gzip'
+
+# 使用压缩时是否删除原始文件,默认为false
+VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false
+
+#后台接口父地址(必填)
+VITE_GLOB_API_URL=/jeecgboot
+
+#后台接口全路径地址(必填)
+VITE_GLOB_DOMAIN_URL=http://jeecg-boot-gateway:9999
+
+# 接口父路径前缀
+VITE_GLOB_API_URL_PREFIX=
+
+
+# 填写后将作为乾坤子应用启动,主应用注册时AppName需保持一致(放开 VITE_GLOB_QIANKUN_MICRO_APP_NAME 参数表示jeecg-vue3将以乾坤子应用模式启动)
+#VITE_GLOB_QIANKUN_MICRO_APP_NAME=jeecg-vue3
+# 作为乾坤子应用启动时必填,需与qiankun主应用注册子应用时填写的 entry 保持一致
+#VITE_GLOB_QIANKUN_MICRO_APP_ENTRY=//qiankun.boot3.jeecg.com/jeecg-vue3
+
+# 全局隐藏哪些布局。可选属性:sider,header,multi-tabs;多个用逗号隔开
+#VITE_GLOB_HIDE_LAYOUT_TYPES=sider,header,multi-tabs
+
+# 在线文档编辑版本。可选属性:wps, offlineWps(离线版), onlyoffice
+VITE_GLOB_ONLINE_DOCUMENT_VERSION=wps
diff --git a/jeecgboot-vue3/Dockerfile.cloud b/jeecgboot-vue3/Dockerfile.cloud
new file mode 100644
index 000000000..691de965f
--- /dev/null
+++ b/jeecgboot-vue3/Dockerfile.cloud
@@ -0,0 +1,30 @@
+FROM registry.cn-hangzhou.aliyuncs.com/dockerhub_mirror/nginx
+MAINTAINER jeecgos@163.com
+VOLUME /tmp
+ENV LANG en_US.UTF-8
+RUN echo "server { \
+ listen 80; \
+ location /jeecgboot/ { \
+ proxy_pass http://jeecg-boot-gateway:9999/; \
+ proxy_redirect off; \
+ proxy_set_header Host jeecg-boot-system; \
+ proxy_set_header X-Real-IP \$remote_addr; \
+ proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; \
+ } \
+ #解决Router(mode: 'history')模式下,刷新路由地址不能找到页面的问题 \
+ location / { \
+ root /var/www/html/; \
+ index index.html index.htm; \
+ if (!-e \$request_filename) { \
+ rewrite ^(.*)\$ /index.html?s=\$1 last; \
+ break; \
+ } \
+ } \
+ access_log /var/log/nginx/access.log ; \
+ } " > /etc/nginx/conf.d/default.conf \
+ && mkdir -p /var/www \
+ && mkdir -p /var/www/html
+
+ADD dist/ /var/www/html/
+EXPOSE 80
+EXPOSE 443
diff --git a/jeecgboot-vue3/package.json b/jeecgboot-vue3/package.json
index 0553897f9..9175a273b 100644
--- a/jeecgboot-vue3/package.json
+++ b/jeecgboot-vue3/package.json
@@ -11,6 +11,8 @@
"clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite",
"dev": "vite",
"build": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=8192 vite build && esno ./build/script/postBuild.ts && esno ./build/script/copyChat.ts",
+ "build:docker": "cross-env NODE_ENV=docker NODE_OPTIONS=--max-old-space-size=8192 vite build && esno ./build/script/postBuild.ts && esno ./build/script/copyChat.ts",
+ "build:dockercloud": "cross-env NODE_ENV=dockercloud NODE_OPTIONS=--max-old-space-size=8192 vite build && esno ./build/script/postBuild.ts && esno ./build/script/copyChat.ts",
"build:report": "pnpm clean:cache && cross-env REPORT=true npm run build",
"preview": "npm run build && vite preview",
"reinstall": "rimraf pnpm-lock.yaml && rimraf yarn.lock && rimraf package.lock.json && rimraf node_modules && npm run install",