feat(ops): add deployment configuration and actuator dependency
This commit is contained in:
11
Jenkinsfile
vendored
11
Jenkinsfile
vendored
@@ -22,7 +22,7 @@ pipeline {
|
|||||||
DEPS_IMAGE = "${REGISTRY}/aiot-deps:latest"
|
DEPS_IMAGE = "${REGISTRY}/aiot-deps:latest"
|
||||||
|
|
||||||
// 服务配置
|
// 服务配置
|
||||||
CORE_SERVICES = 'viewsh-gateway,viewsh-module-system-server,viewsh-module-infra-server,viewsh-module-iot-server,viewsh-module-iot-gateway'
|
CORE_SERVICES = 'viewsh-gateway,viewsh-module-system-server,viewsh-module-infra-server,viewsh-module-iot-server,viewsh-module-iot-gateway,viewsh-module-ops-server'
|
||||||
|
|
||||||
// 部署配置
|
// 部署配置
|
||||||
DEPLOY_HOST = '172.19.0.1'
|
DEPLOY_HOST = '172.19.0.1'
|
||||||
@@ -1000,7 +1000,8 @@ def sortServicesByDependency(def services) {
|
|||||||
'viewsh-module-system-server',
|
'viewsh-module-system-server',
|
||||||
'viewsh-module-infra-server',
|
'viewsh-module-infra-server',
|
||||||
'viewsh-module-iot-server',
|
'viewsh-module-iot-server',
|
||||||
'viewsh-module-iot-gateway'
|
'viewsh-module-iot-gateway',
|
||||||
|
'viewsh-module-ops-server'
|
||||||
]
|
]
|
||||||
|
|
||||||
return services.sort { a, b ->
|
return services.sort { a, b ->
|
||||||
@@ -1016,7 +1017,8 @@ def getContainerNameForService(String service) {
|
|||||||
'viewsh-module-system-server': 'aiot-system-server',
|
'viewsh-module-system-server': 'aiot-system-server',
|
||||||
'viewsh-module-infra-server': 'aiot-infra-server',
|
'viewsh-module-infra-server': 'aiot-infra-server',
|
||||||
'viewsh-module-iot-server': 'aiot-iot-server',
|
'viewsh-module-iot-server': 'aiot-iot-server',
|
||||||
'viewsh-module-iot-gateway': 'aiot-iot-gateway'
|
'viewsh-module-iot-gateway': 'aiot-iot-gateway',
|
||||||
|
'viewsh-module-ops-server': 'aiot-ops-server'
|
||||||
]
|
]
|
||||||
return map.get(service, "aiot-${service}")
|
return map.get(service, "aiot-${service}")
|
||||||
}
|
}
|
||||||
@@ -1029,7 +1031,8 @@ def getModulePathForService(String service) {
|
|||||||
'viewsh-module-system-server': 'viewsh-module-system/viewsh-module-system-server',
|
'viewsh-module-system-server': 'viewsh-module-system/viewsh-module-system-server',
|
||||||
'viewsh-module-infra-server': 'viewsh-module-infra/viewsh-module-infra-server',
|
'viewsh-module-infra-server': 'viewsh-module-infra/viewsh-module-infra-server',
|
||||||
'viewsh-module-iot-server': 'viewsh-module-iot/viewsh-module-iot-server',
|
'viewsh-module-iot-server': 'viewsh-module-iot/viewsh-module-iot-server',
|
||||||
'viewsh-module-iot-gateway': 'viewsh-module-iot/viewsh-module-iot-gateway'
|
'viewsh-module-iot-gateway': 'viewsh-module-iot/viewsh-module-iot-gateway',
|
||||||
|
'viewsh-module-ops-server': 'viewsh-module-ops/viewsh-module-ops-server'
|
||||||
]
|
]
|
||||||
return map.get(service, service)
|
return map.get(service, service)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -208,3 +208,40 @@ services:
|
|||||||
depends_on:
|
depends_on:
|
||||||
- viewsh-module-iot-server
|
- viewsh-module-iot-server
|
||||||
|
|
||||||
|
viewsh-module-ops-server:
|
||||||
|
image: ${REGISTRY_HOST:-localhost:5000}/viewsh-module-ops-server:${IMAGE_TAG:-latest}
|
||||||
|
container_name: aiot-ops-server
|
||||||
|
restart: on-failure:5
|
||||||
|
ports:
|
||||||
|
- "48092:48092"
|
||||||
|
environment:
|
||||||
|
TZ: Asia/Shanghai
|
||||||
|
SPRING_PROFILES_ACTIVE: prod
|
||||||
|
JAVA_OPTS: "-Xms512m -Xmx1024m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
|
||||||
|
|
||||||
|
NACOS_USERNAME: nacos
|
||||||
|
NACOS_PASSWORD: 9oDxX~}e7DeP
|
||||||
|
NACOS_ADDR: 172.17.16.14:8848
|
||||||
|
NACOS_DISCOVERY_NAMESPACE: "8efd6d96-de7f-4664-b28e-c2788ffa1395"
|
||||||
|
NACOS_CONFIG_NAMESPACE: "8efd6d96-de7f-4664-b28e-c2788ffa1395"
|
||||||
|
|
||||||
|
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL: jdbc:mysql://172.17.16.14:3306/aiot-platform?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true
|
||||||
|
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME: root
|
||||||
|
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD: "65p^VTPi9Qd+"
|
||||||
|
|
||||||
|
SPRING_DATA_REDIS_HOST: 172.17.16.14
|
||||||
|
SPRING_DATA_REDIS_PASSWORD: "9kHXcZ1ojFsD"
|
||||||
|
|
||||||
|
ROCKETMQ_NAME_SERVER: 172.17.16.14:9876
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
- app-logs:/app/logs
|
||||||
|
healthcheck:
|
||||||
|
test: ["CMD", "curl", "-f", "http://localhost:48092/actuator/health"]
|
||||||
|
interval: 10s
|
||||||
|
timeout: 5s
|
||||||
|
retries: 12
|
||||||
|
start_period: 120s
|
||||||
|
depends_on:
|
||||||
|
viewsh-module-iot-server:
|
||||||
|
condition: service_healthy
|
||||||
|
|||||||
19
viewsh-module-ops/viewsh-module-ops-server/Dockerfile
Normal file
19
viewsh-module-ops/viewsh-module-ops-server/Dockerfile
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
## AdoptOpenJDK 停止发布 OpenJDK 二进制,而 Eclipse Temurin 是它的延伸,提供更好的稳定性
|
||||||
|
## 感谢复旦核博士的建议!灰子哥,牛皮!
|
||||||
|
FROM eclipse-temurin:21-jre
|
||||||
|
|
||||||
|
## 创建目录,并使用它作为工作目录
|
||||||
|
RUN mkdir -p /viewsh-module-ops-server
|
||||||
|
WORKDIR /viewsh-module-ops-server
|
||||||
|
## 将后端项目的 Jar 文件,复制到镜像中
|
||||||
|
COPY ./target/viewsh-module-ops-server.jar app.jar
|
||||||
|
|
||||||
|
## 设置 TZ 时区
|
||||||
|
## 设置 JAVA_OPTS 环境变量,可通过 docker run -e "JAVA_OPTS=" 进行覆盖
|
||||||
|
ENV TZ=Asia/Shanghai JAVA_OPTS="-Xms512m -Xmx512m"
|
||||||
|
|
||||||
|
## 暴露后端项目的 48092 端口
|
||||||
|
EXPOSE 48092
|
||||||
|
|
||||||
|
## 启动后端项目
|
||||||
|
CMD java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar app.jar
|
||||||
@@ -0,0 +1,147 @@
|
|||||||
|
--- #################### 注册中心 + 配置中心相关配置 ####################
|
||||||
|
|
||||||
|
spring:
|
||||||
|
cloud:
|
||||||
|
nacos:
|
||||||
|
server-addr: ${NACOS_ADDR:127.0.0.1:8848} # Nacos 服务器地址
|
||||||
|
username: ${NACOS_USERNAME:nacos} # Nacos 账号
|
||||||
|
password: ${NACOS_PASSWORD:nacos} # Nacos 密码
|
||||||
|
discovery: # 【配置中心】配置项
|
||||||
|
namespace: ${NACOS_DISCOVERY_NAMESPACE:public} # 命名空间
|
||||||
|
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
|
||||||
|
metadata:
|
||||||
|
version: 1.0.0 # 服务实例的版本号,可用于灰度发布
|
||||||
|
config: # 【注册中心】配置项
|
||||||
|
namespace: ${NACOS_CONFIG_NAMESPACE:public} # 命名空间
|
||||||
|
group: DEFAULT_GROUP # 使用的 Nacos 配置分组,默认为 DEFAULT_GROUP
|
||||||
|
|
||||||
|
--- #################### 数据库相关配置 ####################
|
||||||
|
spring:
|
||||||
|
# 数据源配置项
|
||||||
|
autoconfigure:
|
||||||
|
# noinspection SpringBootApplicationYaml
|
||||||
|
exclude:
|
||||||
|
- com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure # 排除 Druid 的自动配置,使用 dynamic-datasource-spring-boot-starter 配置多数据源
|
||||||
|
datasource:
|
||||||
|
druid: # Druid 【监控】相关的全局配置
|
||||||
|
web-stat-filter:
|
||||||
|
enabled: true
|
||||||
|
stat-view-servlet:
|
||||||
|
enabled: true
|
||||||
|
allow: # 设置白名单,不填则允许所有访问
|
||||||
|
url-pattern: /druid/*
|
||||||
|
login-username: # 控制台管理用户名和密码
|
||||||
|
login-password:
|
||||||
|
filter:
|
||||||
|
stat:
|
||||||
|
enabled: true
|
||||||
|
log-slow-sql: true # 慢 SQL 记录
|
||||||
|
slow-sql-millis: 100
|
||||||
|
merge-sql: true
|
||||||
|
wall:
|
||||||
|
config:
|
||||||
|
multi-statement-allow: true
|
||||||
|
dynamic: # 多数据源配置
|
||||||
|
druid: # Druid 【连接池】相关的全局配置
|
||||||
|
initial-size: 5 # 初始连接数
|
||||||
|
min-idle: 10 # 最小连接池数量
|
||||||
|
max-active: 20 # 最大连接池数量
|
||||||
|
max-wait: 60000 # 配置获取连接等待超时的时间,单位:毫秒(1 分钟)
|
||||||
|
time-between-eviction-runs-millis: 60000 # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位:毫秒(1 分钟)
|
||||||
|
min-evictable-idle-time-millis: 600000 # 配置一个连接在池中最小生存的时间,单位:毫秒(10 分钟)
|
||||||
|
max-evictable-idle-time-millis: 1800000 # 配置一个连接在池中最大生存的时间,单位:毫秒(30 分钟)
|
||||||
|
validation-query: SELECT 1 FROM DUAL # 配置检测连接是否有效
|
||||||
|
test-while-idle: true
|
||||||
|
test-on-borrow: false
|
||||||
|
test-on-return: false
|
||||||
|
pool-prepared-statements: true # 是否开启 PreparedStatement 缓存
|
||||||
|
max-pool-prepared-statement-per-connection-size: 20 # 每个连接缓存的 PreparedStatement 数量
|
||||||
|
primary: master
|
||||||
|
datasource:
|
||||||
|
master:
|
||||||
|
url: ${SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL}
|
||||||
|
username: ${SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME}
|
||||||
|
password: ${SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD}
|
||||||
|
slave: # 模拟从库,可根据自己需要修改
|
||||||
|
lazy: true # 开启懒加载,保证启动速度
|
||||||
|
url: ${SPRING_DATASOURCE_DYNAMIC_DATASOURCE_SLAVE_URL:${SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL}}
|
||||||
|
username: ${SPRING_DATASOURCE_DYNAMIC_DATASOURCE_SLAVE_USERNAME:${SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME}}
|
||||||
|
password: ${SPRING_DATASOURCE_DYNAMIC_DATASOURCE_SLAVE_PASSWORD:${SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD}}
|
||||||
|
# Redis 配置。Redisson 默认的配置足够使用,一般不需要进行调优
|
||||||
|
data:
|
||||||
|
redis:
|
||||||
|
host: ${SPRING_DATA_REDIS_HOST:127.0.0.1} # 地址
|
||||||
|
port: ${SPRING_DATA_REDIS_PORT:6379} # 端口
|
||||||
|
database: ${SPRING_DATA_REDIS_DATABASE:0} # 数据库索引
|
||||||
|
password: ${SPRING_DATA_REDIS_PASSWORD} # 密码
|
||||||
|
|
||||||
|
--- #################### MQ 消息队列相关配置 ####################
|
||||||
|
|
||||||
|
# rocketmq 配置项,对应 RocketMQProperties 配置类
|
||||||
|
rocketmq:
|
||||||
|
name-server: ${ROCKETMQ_NAME_SERVER:127.0.0.1:9876} # RocketMQ Namesrv
|
||||||
|
|
||||||
|
spring:
|
||||||
|
# RabbitMQ 配置项,对应 RabbitProperties 配置类
|
||||||
|
rabbitmq:
|
||||||
|
host: ${SPRING_RABBITMQ_HOST:127.0.0.1} # RabbitMQ 服务的地址
|
||||||
|
port: ${SPRING_RABBITMQ_PORT:5672} # RabbitMQ 服务的端口
|
||||||
|
username: ${SPRING_RABBITMQ_USERNAME:guest} # RabbitMQ 服务的账号
|
||||||
|
password: ${SPRING_RABBITMQ_PASSWORD:guest} # RabbitMQ 服务的密码
|
||||||
|
# Kafka 配置项,对应 KafkaProperties 配置类
|
||||||
|
kafka:
|
||||||
|
bootstrap-servers: ${SPRING_KAFKA_BOOTSTRAP_SERVERS:127.0.0.1:9092} # 指定 Kafka Broker 地址,可以设置多个,以逗号分隔
|
||||||
|
|
||||||
|
--- #################### 定时任务相关配置 ####################
|
||||||
|
|
||||||
|
xxl:
|
||||||
|
job:
|
||||||
|
enabled: true
|
||||||
|
admin:
|
||||||
|
addresses: ${XXL_JOB_ADMIN_ADDRESSES:http://127.0.0.1:9090/xxl-job-admin} # 调度中心部署跟地址
|
||||||
|
|
||||||
|
--- #################### 服务保障相关配置 ####################
|
||||||
|
|
||||||
|
# Lock4j 配置项
|
||||||
|
lock4j:
|
||||||
|
acquire-timeout: 3000 # 获取分布式锁超时时间,默认为 3000 毫秒
|
||||||
|
expire: 30000 # 分布式锁的超时时间,默认为 30 毫秒
|
||||||
|
|
||||||
|
--- #################### 监控相关配置 ####################
|
||||||
|
|
||||||
|
# Actuator 监控端点的配置项
|
||||||
|
management:
|
||||||
|
endpoints:
|
||||||
|
web:
|
||||||
|
base-path: /actuator # Actuator 提供的 API 接口的根目录。默认为 /actuator
|
||||||
|
exposure:
|
||||||
|
include: '*' # 需要开放的端点。默认值只打开 health 和 info 两个端点。通过设置 * ,可以开放所有端点。
|
||||||
|
|
||||||
|
# Spring Boot Admin 配置项
|
||||||
|
spring:
|
||||||
|
boot:
|
||||||
|
admin:
|
||||||
|
# Spring Boot Admin Client 客户端的相关配置
|
||||||
|
client:
|
||||||
|
instance:
|
||||||
|
service-host-type: IP # 注册实例时,优先使用 IP [IP, HOST_NAME, CANONICAL_HOST_NAME]
|
||||||
|
username: ${SPRING_BOOT_ADMIN_CLIENT_USERNAME:admin}
|
||||||
|
password: ${SPRING_BOOT_ADMIN_CLIENT_PASSWORD:admin}
|
||||||
|
|
||||||
|
# 日志文件配置
|
||||||
|
logging:
|
||||||
|
level:
|
||||||
|
# 配置自己写的 MyBatis Mapper 打印日志
|
||||||
|
com.viewsh.module.ops.dal.mysql: info # 生产环境建议 info
|
||||||
|
org.springframework.context.support.PostProcessorRegistrationDelegate: ERROR # TODO 芋艿:先禁用,Spring Boot 3.X 存在部分错误的 WARN 提示
|
||||||
|
|
||||||
|
--- #################### 芋道相关配置 ####################
|
||||||
|
|
||||||
|
# 芋道配置项,设置当前项目所有自定义的配置
|
||||||
|
viewsh:
|
||||||
|
env: # 多环境的配置项
|
||||||
|
tag: ${HOSTNAME}
|
||||||
|
security:
|
||||||
|
mock-enable: false # 生产环境禁用 mock
|
||||||
|
access-log: # 访问日志的配置项
|
||||||
|
enable: true # 生产环境开启访问日志
|
||||||
Reference in New Issue
Block a user