From 5333d94f4409dfe7cfcc7349c35dd8e34d6435bb Mon Sep 17 00:00:00 2001 From: Github_lizhw <171332584@qq.com> Date: Tue, 14 Jan 2025 22:40:08 +0800 Subject: [PATCH] =?UTF-8?q?=E9=83=A8=E7=BD=B2=E5=9C=A8docker=E4=B8=8A?= =?UTF-8?q?=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ruoyi-site/ruoyi-gateway/Dockerfile | 10 +- ruoyi-site/ruoyi-gateway/pom.xml | 9 +- .../dromara/gateway/filter/AuthFilter.java | 20 +-- .../dromara/gateway/sso/SsoController.java | 9 +- .../src/main/resources/application-dev.yml | 13 +- .../src/main/resources/application-local.yml | 153 ++++++++++++++++++ .../src/main/resources/application.yml | 19 --- ruoyi-site/ruoyi-h5/Dockerfile | 10 +- ruoyi-site/ruoyi-h5/pom.xml | 9 +- .../src/main/resources/application-dev.yml | 11 +- .../src/main/resources/application-local.yml | 8 + ruoyi-site/ruoyi-sso-server/Dockerfile | 4 +- .../src/main/resources/application-dev.yml | 9 -- script/docker_app/docker-compose.yml | 10 +- 14 files changed, 226 insertions(+), 68 deletions(-) create mode 100644 ruoyi-site/ruoyi-gateway/src/main/resources/application-local.yml diff --git a/ruoyi-site/ruoyi-gateway/Dockerfile b/ruoyi-site/ruoyi-gateway/Dockerfile index de8673b4f..a1dbe02d7 100644 --- a/ruoyi-site/ruoyi-gateway/Dockerfile +++ b/ruoyi-site/ruoyi-gateway/Dockerfile @@ -5,20 +5,20 @@ FROM bellsoft/liberica-openjdk-debian:17.0.11-cds LABEL maintainer="lizhw" -RUN mkdir -p /ruoyi/gateway/logs \ - /ruoyi/gateway/temp \ +RUN mkdir -p /ruoyi/server/logs \ + /ruoyi/server/temp \ /ruoyi/skywalking/agent -WORKDIR /ruoyi/gateway +WORKDIR /ruoyi/server ENV SERVER_PORT=18000 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS="" EXPOSE ${SERVER_PORT} -ADD ./target/ruoyi-gateway.jar ./app.jar +ADD ./target/ruoyi-gateway.jar ./ ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \ #-Dskywalking.agent.service_name=ruoyi-gateway \ #-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar \ -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC ${JAVA_OPTS} \ - -jar app.jar + -jar ruoyi-gateway.jar diff --git a/ruoyi-site/ruoyi-gateway/pom.xml b/ruoyi-site/ruoyi-gateway/pom.xml index a3069f005..f2dca926e 100644 --- a/ruoyi-site/ruoyi-gateway/pom.xml +++ b/ruoyi-site/ruoyi-gateway/pom.xml @@ -32,10 +32,11 @@ caffeine - - - - + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + diff --git a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java index 791297156..1c1e7aa2d 100644 --- a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java +++ b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/filter/AuthFilter.java @@ -55,16 +55,16 @@ public class AuthFilter { } } - // 检查 header 与 param 里的 clientid 与 token 里的是否一致 - String headerCid = request.getHeaders().getFirst(CLIENT_KEY); - String paramCid = request.getQueryParams().getFirst(CLIENT_KEY); - String clientId = StpUtil.getExtra(CLIENT_KEY).toString(); - if (!StringUtils.equalsAny(clientId, headerCid, paramCid)) { - // token 无效 - throw NotLoginException.newInstance(StpUtil.getLoginType(), - "-100", "客户端ID与Token不匹配", - StpUtil.getTokenValue()); - } +// // 检查 header 与 param 里的 clientid 与 token 里的是否一致 +// String headerCid = request.getHeaders().getFirst(CLIENT_KEY); +// String paramCid = request.getQueryParams().getFirst(CLIENT_KEY); +// String clientId = StpUtil.getExtra(CLIENT_KEY).toString(); +// if (!StringUtils.equalsAny(clientId, headerCid, paramCid)) { +// // token 无效 +// throw NotLoginException.newInstance(StpUtil.getLoginType(), +// "-100", "客户端ID与Token不匹配", +// StpUtil.getTokenValue()); +// } // 有效率影响 用于临时测试 // if (log.isDebugEnabled()) { diff --git a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/sso/SsoController.java b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/sso/SsoController.java index e83e9476d..218d5b845 100644 --- a/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/sso/SsoController.java +++ b/ruoyi-site/ruoyi-gateway/src/main/java/org/dromara/gateway/sso/SsoController.java @@ -5,9 +5,12 @@ import cn.dev33.satoken.sso.config.SaSsoClientConfig; import cn.dev33.satoken.sso.model.SaCheckTicketResult; import cn.dev33.satoken.sso.name.ParamName; import cn.dev33.satoken.sso.processor.SaSsoClientProcessor; +import cn.dev33.satoken.stp.SaLoginModel; import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.util.SaFoxUtil; import cn.dev33.satoken.util.SaResult; +import org.dromara.common.core.enums.DeviceType; +import org.dromara.gateway.filter.AuthFilter; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -104,7 +107,11 @@ public class SsoController { @RequestMapping("/sso/doLoginByTicket") public SaResult doLoginByTicket(@RequestParam() String ticket) { SaCheckTicketResult ctr = SaSsoClientProcessor.instance.checkTicket(ticket, "/sso/doLoginByTicket"); - StpUtil.login(ctr.loginId, ctr.remainSessionTimeout); + SaLoginModel model = new SaLoginModel(); + model.setDevice(DeviceType.PC.getDevice()); + model.setTimeout(ctr.remainSessionTimeout); + model.setExtra(AuthFilter.CLIENT_KEY, SaSsoManager.getClientConfig().getClient()); + StpUtil.login(ctr.loginId, model); return SaResult.data(StpUtil.getTokenValue()); } diff --git a/ruoyi-site/ruoyi-gateway/src/main/resources/application-dev.yml b/ruoyi-site/ruoyi-gateway/src/main/resources/application-dev.yml index 594147145..ee26b0987 100644 --- a/ruoyi-site/ruoyi-gateway/src/main/resources/application-dev.yml +++ b/ruoyi-site/ruoyi-gateway/src/main/resources/application-dev.yml @@ -22,7 +22,7 @@ security: spring: data: redis: - host: localhost # Redis服务器地址 + host: redis # Redis服务器地址 database: 0 # Redis数据库索引(默认为0) port: 6379 # Redis服务器连接端口 password: Lzw8800580/ @@ -31,6 +31,13 @@ spring: # 是否开启ssl ssl.enabled: false cloud: + nacos: + # nacos 服务地址 + server-addr: http://nacos-registry:8848 + discovery: + # 注册组 + group: DUBBO_GROUP + namespace: c5c00044-93e6-4e66-8060-3f39aa7ab82b # 网关配置 gateway: # 打印请求日志(自定义) @@ -38,7 +45,7 @@ spring: discovery: locator: lowerCaseServiceId: true - enabled: true + enabled: true #开启注册中心路由 routes: # 认证中心 - id: ruoyi-auth @@ -109,6 +116,8 @@ sa-token: # SSO-Server 端主机地址 server-url: http://sa-sso-server.com:19000 auth-url: http://sa-sso-server.com:8701/?mode=ticket#/sso-login + # SSO-Server 端校验ticket地址 + check-ticket-url: http://ruoyi-sso-server:19000 # pc 客户端id client: e5cd7e4891bf95d1d19206ce24a7b32e #jwt密钥 diff --git a/ruoyi-site/ruoyi-gateway/src/main/resources/application-local.yml b/ruoyi-site/ruoyi-gateway/src/main/resources/application-local.yml new file mode 100644 index 000000000..d7c86f587 --- /dev/null +++ b/ruoyi-site/ruoyi-gateway/src/main/resources/application-local.yml @@ -0,0 +1,153 @@ +# 安全配置 +security: + # 不校验白名单 + ignore: + whites: + - /auth/code + - /auth/logout + - /auth/login + - /auth/binding/* + - /auth/social/callback + - /auth/register + - /auth/tenant/list + - /resource/sms/code + - /resource/sse/close + - /*/v3/api-docs + - /*/error + - /csrf + - /sso/getSsoAuthUrl + - /sso/isLogin + - /sso/doLoginByTicket + +spring: + data: + redis: + host: 127.0.0.1 # Redis服务器地址 + database: 0 # Redis数据库索引(默认为0) + port: 6379 # Redis服务器连接端口 + password: Lzw8800580/ + # 连接超时时间 + timeout: 10s + # 是否开启ssl + ssl.enabled: false + cloud: + nacos: + # nacos 服务地址 + server-addr: http://127.0.0.1:8848 + discovery: + # 注册组 + group: DUBBO_GROUP + namespace: c5c00044-93e6-4e66-8060-3f39aa7ab82b + # 网关配置 + gateway: + # 打印请求日志(自定义) + requestLog: true + discovery: + locator: + lowerCaseServiceId: true + enabled: true + routes: + # 认证中心 + - id: ruoyi-auth + uri: lb://ruoyi-auth + predicates: + - Path=/auth/** + filters: + - StripPrefix=1 + # 代码生成 + - id: ruoyi-gen + uri: lb://ruoyi-gen + predicates: + - Path=/tool/** + filters: + - StripPrefix=1 + # 系统模块 + - id: ruoyi-system + uri: lb://ruoyi-system + predicates: + - Path=/system/**,/monitor/** + filters: + - StripPrefix=1 + # 资源服务 + - id: ruoyi-resource + uri: lb://ruoyi-resource + predicates: + - Path=/resource/** + filters: + - StripPrefix=1 + # workflow服务 + - id: ruoyi-workflow + uri: lb://ruoyi-workflow + predicates: + - Path=/workflow/** + # 演示服务 + - id: ruoyi-demo + uri: lb://ruoyi-demo + predicates: + - Path=/demo/** + filters: + - StripPrefix=1 + # MQ演示服务 + - id: ruoyi-h5 + uri: lb://ruoyi-h5 + predicates: + - Path=/ruoyi-h5/** + filters: + - StripPrefix=1 + + +# sa-token配置 +sa-token: + sign: + # API client和server之间调用 接口签名秘钥 (随便乱摁几个字母即可) + secret-key: kQwIOrYbtXmSDkwEiFngrKidMcdrgKor + # token名称 (同时也是cookie名称) + token-name: Authorization + # 允许从 header 读取 token + is-read-header: true + # 关闭 cookie 鉴权 从根源杜绝 csrf 漏洞风险 + is-read-cookie: false + # 允许从 请求参数 读取 token + is-read-body: true + # 在多人登录同一账号时,是否共用一个token (为true(默认)时所有登录共用一个token, 为false时每次登录新建一个token),这个为false会导致登陆多次后redis内存的token不能很好释放 + is-share: false + # SSO-相关配置 + sso-client: + # SSO-Server 端主机地址 + server-url: http://sa-sso-server.com:19000 + auth-url: http://sa-sso-server.com:8701/?mode=ticket#/sso-login + # SSO-Server 端校验ticket地址 + check-ticket-url: http://ruoyi-sso-server:19000 + # pc 客户端id + client: e5cd7e4891bf95d1d19206ce24a7b32e + #jwt密钥 + jwt-secret-key: abcdcosctlklmnopqrstuvwxyz + token-prefix: Bearer + + # 配置Sa-Token单独使用的Redis连接 (此处需要和SSO-Server端连接同一个Redis) + alone-redis: + # Redis数据库索引 (默认为0) + database: ${spring.data.redis.database} + # Redis服务器地址 + host: ${spring.data.redis.host} + # Redis服务器连接端口 + port: ${spring.data.redis.port} + # Redis服务器连接密码(默认为空) + password: ${spring.data.redis.password} + # 连接超时时间 + timeout: ${spring.data.redis.timeout} + lettuce: + pool: + # 连接池最大连接数 + max-active: 200 + # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: -1ms + # 连接池中的最大空闲连接 + max-idle: 10 + # 连接池中的最小空闲连接 + min-idle: 1 + +# 多租户配置 +tenant: + # 是否开启 + enable: false diff --git a/ruoyi-site/ruoyi-gateway/src/main/resources/application.yml b/ruoyi-site/ruoyi-gateway/src/main/resources/application.yml index ae27210fc..9f9f022f2 100644 --- a/ruoyi-site/ruoyi-gateway/src/main/resources/application.yml +++ b/ruoyi-site/ruoyi-gateway/src/main/resources/application.yml @@ -12,22 +12,3 @@ spring: profiles: # 环境配置 active: @profiles.active@ - - ---- # nacos 配置 -spring: - cloud: - nacos: - # nacos 服务地址 - server-addr: http://localhost:8848 - discovery: - # 注册组 - group: dev - namespace: c5c00044-93e6-4e66-8060-3f39aa7ab82b - config: - # 配置组 - group: dev - namespace: c5c00044-93e6-4e66-8060-3f39aa7ab82b - config: - import: - - optional:nacos:application-common.yml diff --git a/ruoyi-site/ruoyi-h5/Dockerfile b/ruoyi-site/ruoyi-h5/Dockerfile index e87fe55a2..320d09464 100644 --- a/ruoyi-site/ruoyi-h5/Dockerfile +++ b/ruoyi-site/ruoyi-h5/Dockerfile @@ -5,22 +5,22 @@ FROM bellsoft/liberica-openjdk-debian:17.0.11-cds LABEL maintainer="lizhw" -RUN mkdir -p /ruoyi/resource/logs \ - /ruoyi/resource/temp \ +RUN mkdir -p /ruoyi/server/logs \ + /ruoyi/server/temp \ /ruoyi/skywalking/agent -WORKDIR /ruoyi/resource +WORKDIR /ruoyi/server ENV SERVER_PORT=19200 LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS="" EXPOSE ${SERVER_PORT} -ADD ./target/ruoyi-h5.jar ./app.jar +ADD ./target/ruoyi-h5.jar ./ ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \ # 应用名称 如果想区分集群节点监控 改成不同的名称即可 #-Dskywalking.agent.service_name=ruoyi-h5 \ #-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar \ -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC ${JAVA_OPTS} \ - -jar app.jar + -jar ruoyi-h5.jar diff --git a/ruoyi-site/ruoyi-h5/pom.xml b/ruoyi-site/ruoyi-h5/pom.xml index 101a8d7e9..6f4aa6f0c 100644 --- a/ruoyi-site/ruoyi-h5/pom.xml +++ b/ruoyi-site/ruoyi-h5/pom.xml @@ -61,10 +61,11 @@ ruoyi-common-encrypt - - - - + + + com.alibaba.cloud + spring-cloud-starter-alibaba-nacos-discovery + diff --git a/ruoyi-site/ruoyi-h5/src/main/resources/application-dev.yml b/ruoyi-site/ruoyi-h5/src/main/resources/application-dev.yml index 0549e095c..3cbd01899 100644 --- a/ruoyi-site/ruoyi-h5/src/main/resources/application-dev.yml +++ b/ruoyi-site/ruoyi-h5/src/main/resources/application-dev.yml @@ -1,5 +1,13 @@ --- # spring 配置 spring: + cloud: + nacos: + # nacos 服务地址 + server-addr: http://nacos-registry:8848 + discovery: + # 注册组 + group: DUBBO_GROUP + namespace: c5c00044-93e6-4e66-8060-3f39aa7ab82b # 资源信息 messages: # 国际化资源文件路径 @@ -76,7 +84,7 @@ spring: # 连接池中的最大空闲连接 max-idle: 10 # 连接池中的最小空闲连接 - min-idle: 0 + min-idle: 1 springdoc: @@ -161,7 +169,6 @@ dubbo: group: DUBBO_GROUP parameters: namespace: c5c00044-93e6-4e66-8060-3f39aa7ab82b - # 消费者相关配置 consumer: # 结果缓存(LRU算法) # 会有数据不一致问题 建议在注解局部开启 diff --git a/ruoyi-site/ruoyi-h5/src/main/resources/application-local.yml b/ruoyi-site/ruoyi-h5/src/main/resources/application-local.yml index 0549e095c..8acb671da 100644 --- a/ruoyi-site/ruoyi-h5/src/main/resources/application-local.yml +++ b/ruoyi-site/ruoyi-h5/src/main/resources/application-local.yml @@ -1,5 +1,13 @@ --- # spring 配置 spring: + cloud: + nacos: + # nacos 服务地址 + server-addr: http://127.0.0.1:8848 + discovery: + # 注册组 + group: DUBBO_GROUP + namespace: c5c00044-93e6-4e66-8060-3f39aa7ab82b # 资源信息 messages: # 国际化资源文件路径 diff --git a/ruoyi-site/ruoyi-sso-server/Dockerfile b/ruoyi-site/ruoyi-sso-server/Dockerfile index 8ef6a2f3d..30df21dbc 100644 --- a/ruoyi-site/ruoyi-sso-server/Dockerfile +++ b/ruoyi-site/ruoyi-sso-server/Dockerfile @@ -17,12 +17,12 @@ ENV CONTAINER_NAME ruoyi-sso-server EXPOSE ${SERVER_PORT} -ADD ./target/ruoyi-sso-server.jar ./app.jar +ADD ./target/ruoyi-sso-server.jar ./ ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom -Dserver.port=${SERVER_PORT} \ # 应用名称 如果想区分集群节点监控 改成不同的名称即可 #-Dskywalking.agent.service_name=ruoyi-server \ #-javaagent:/ruoyi/skywalking/agent/skywalking-agent.jar \ -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC ${JAVA_OPTS} \ - -jar app.jar + -jar ruoyi-sso-server.jar diff --git a/ruoyi-site/ruoyi-sso-server/src/main/resources/application-dev.yml b/ruoyi-site/ruoyi-sso-server/src/main/resources/application-dev.yml index 99a228887..a8111d3a2 100644 --- a/ruoyi-site/ruoyi-sso-server/src/main/resources/application-dev.yml +++ b/ruoyi-site/ruoyi-sso-server/src/main/resources/application-dev.yml @@ -105,7 +105,6 @@ security: # dubbo dubbo: - config: protocol: name: tri port: 20880 @@ -119,14 +118,6 @@ dubbo: group: DUBBO_GROUP parameters: namespace: c5c00044-93e6-4e66-8060-3f39aa7ab82b - # metadata-report: - # address: redis://${spring.data.redis.host}:${spring.data.redis.port} - # # 集群开关,目前单机 - # cluster: false - # parameters: - # database: 6 - # timeout: ${spring.data.redis.timeout} - # 消费者相关配置 consumer: # 结果缓存(LRU算法) # 会有数据不一致问题 建议在注解局部开启 diff --git a/script/docker_app/docker-compose.yml b/script/docker_app/docker-compose.yml index d8ecf8d33..3b11eaa82 100644 --- a/script/docker_app/docker-compose.yml +++ b/script/docker_app/docker-compose.yml @@ -4,7 +4,7 @@ services: image: ruoyi-admin:latest container_name: ruoyi-admin ports: - - 19100:19100 + - "19100:19100" environment: - 'TZ="Asia/Shanghai"' networks: @@ -18,7 +18,7 @@ services: image: ruoyi-sso-server:latest container_name: ruoyi-sso-server ports: - - 19000:19000 + - "19000:19000" environment: - 'TZ="Asia/Shanghai"' networks: @@ -32,7 +32,7 @@ services: image: ruoyi-h5:latest container_name: ruoyi-h5 ports: - - 19200:19200 + - "19200:19200" environment: - 'TZ="Asia/Shanghai"' networks: @@ -46,7 +46,7 @@ services: image: ruoyi-gateway:latest container_name: ruoyi-gateway ports: - - 18000:18000 + - "18000:18000" environment: - 'TZ="Asia/Shanghai"' networks: @@ -60,7 +60,7 @@ services: image: sso-server-vue3:latest container_name: sso-server-vue3 ports: - - 8701:80 + - "8701:80" environment: - 'TZ="Asia/Shanghai"' networks: