部署在docker上面

This commit is contained in:
Github_lizhw 2025-01-14 22:40:08 +08:00
parent 627740d92c
commit 5333d94f44
14 changed files with 226 additions and 68 deletions

View File

@ -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

View File

@ -32,10 +32,11 @@
<artifactId>caffeine</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>org.dromara</groupId>-->
<!-- <artifactId>ruoyi-common-nacos</artifactId>-->
<!-- </dependency>-->
<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringBoot Actuator -->
<dependency>

View File

@ -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()) {

View File

@ -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());
}

View File

@ -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密钥

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -61,10 +61,11 @@
<artifactId>ruoyi-common-encrypt</artifactId>
</dependency>
<!-- <dependency>-->
<!-- <groupId>com.alibaba.cloud</groupId>-->
<!-- <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>-->
<!-- </dependency>-->
<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringBoot Web依赖 -->
<dependency>

View File

@ -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算法)
# 会有数据不一致问题 建议在注解局部开启

View File

@ -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:
# 国际化资源文件路径

View File

@ -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

View File

@ -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算法)
# 会有数据不一致问题 建议在注解局部开启

View File

@ -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: