fix: 修复健康检查和配置问题
- 修复健康检查 IP 地址 (172.17.16.14 -> localhost) - 禁用微信自动配置避免 appid 错误 - 添加服务依赖关系和启动顺序 - 优化 Jenkinsfile 部署流程 - 添加 Quartz 优雅关闭配置 - 注释 XXL-JOB Admin 配置(暂不部署)
This commit is contained in:
16
.env.example
16
.env.example
@@ -111,8 +111,20 @@ OPS_PORT=48085
|
|||||||
# ============ 健康检查配置 ============
|
# ============ 健康检查配置 ============
|
||||||
HEALTH_CHECK_INTERVAL=30s
|
HEALTH_CHECK_INTERVAL=30s
|
||||||
HEALTH_CHECK_TIMEOUT=10s
|
HEALTH_CHECK_TIMEOUT=10s
|
||||||
HEALTH_CHECK_RETRIES=3
|
HEALTH_CHECK_RETRIES=5
|
||||||
HEALTH_CHECK_START_PERIOD=60s
|
HEALTH_CHECK_START_PERIOD=90s
|
||||||
|
|
||||||
|
# ============ XXL-JOB 配置(暂时注释)============
|
||||||
|
# 如需部署 XXL-JOB Admin,取消以下注释
|
||||||
|
# XXL_JOB_ADMIN_ADDRESSES=http://127.0.0.1:9090/xxl-job-admin
|
||||||
|
# XXL_JOB_ACCESS_TOKEN=default_token
|
||||||
|
|
||||||
|
# ============ 微信配置(如果需要微信支付功能) ============
|
||||||
|
# 如果不使用微信支付,保持这些为空或注释掉
|
||||||
|
# WX_MP_APP_ID=
|
||||||
|
# WX_MP_SECRET=
|
||||||
|
# WX_MP_TOKEN=
|
||||||
|
# WX_MP_AES_KEY=
|
||||||
|
|
||||||
# ============ IoT Gateway 特有配置 ============
|
# ============ IoT Gateway 特有配置 ============
|
||||||
# 注意: iot-gateway 已支持 Nacos,同时保留环境变量配置作为补充
|
# 注意: iot-gateway 已支持 Nacos,同时保留环境变量配置作为补充
|
||||||
|
|||||||
91
Jenkinsfile
vendored
91
Jenkinsfile
vendored
@@ -114,18 +114,59 @@ pipeline {
|
|||||||
steps {
|
steps {
|
||||||
script {
|
script {
|
||||||
def services = env.SERVICES_TO_BUILD.split(',') as List
|
def services = env.SERVICES_TO_BUILD.split(',') as List
|
||||||
|
|
||||||
// 部署也可以并行
|
// 按依赖顺序排序
|
||||||
def parallelDeploys = [:]
|
def deployOrder = [
|
||||||
services.each { service ->
|
'viewsh-gateway',
|
||||||
parallelDeploys[service] = {
|
'viewsh-module-system-server',
|
||||||
deployService(service)
|
'viewsh-module-infra-server',
|
||||||
}
|
'viewsh-module-iot-server',
|
||||||
|
'viewsh-module-iot-gateway'
|
||||||
|
]
|
||||||
|
|
||||||
|
def sortedServices = services.sort { a, b ->
|
||||||
|
deployOrder.indexOf(a) <=> deployOrder.indexOf(b)
|
||||||
|
}
|
||||||
|
|
||||||
|
// 串行部署(保证依赖关系)
|
||||||
|
sortedServices.each { service ->
|
||||||
|
deployService(service)
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "🚀 All services deployed successfully!"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stage('Final Health Check') {
|
||||||
|
when {
|
||||||
|
allOf {
|
||||||
|
expression { env.SERVICES_TO_BUILD != '' }
|
||||||
|
branch 'master'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
steps {
|
||||||
|
script {
|
||||||
|
// 验证所有核心服务健康
|
||||||
|
def coreContainers = ['aiot-gateway', 'aiot-system-server', 'aiot-infra-server', 'aiot-iot-server', 'aiot-iot-gateway']
|
||||||
|
|
||||||
|
coreContainers.each { container ->
|
||||||
|
sh """
|
||||||
|
ssh -o StrictHostKeyChecking=no -o ConnectTimeout=10 root@${DEPLOY_HOST} '
|
||||||
|
echo "Checking ${container}..."
|
||||||
|
STATUS=\$(docker inspect --format="{{.State.Health.Status}}" ${container} 2>/dev/null || echo "not_found")
|
||||||
|
if [ "\$STATUS" = "healthy" ]; then
|
||||||
|
echo "✅ ${container} is healthy"
|
||||||
|
elif [ "\$STATUS" = "not_found" ]; then
|
||||||
|
echo "⚠️ ${container} not found (may not be deployed)"
|
||||||
|
else
|
||||||
|
echo "❌ ${container} is \$STATUS"
|
||||||
|
docker logs --tail 50 ${container}
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
'
|
||||||
|
"""
|
||||||
}
|
}
|
||||||
|
|
||||||
parallel parallelDeploys
|
|
||||||
|
|
||||||
echo "🚀 Deployment completed!"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -255,20 +296,36 @@ def deployService(String service) {
|
|||||||
'
|
'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
// 健康检查
|
// 健康检查(增加超时和更好的错误处理)
|
||||||
def containerName = getContainerName(service)
|
def containerName = getContainerName(service)
|
||||||
sh """
|
sh """
|
||||||
ssh ${sshOpts} root@${DEPLOY_HOST} '
|
ssh ${sshOpts} root@${DEPLOY_HOST} '
|
||||||
for i in 1 2 3 4 5 6 7 8 9 10 11 12; do
|
echo "Waiting for ${service} to be healthy..."
|
||||||
|
for i in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20; do
|
||||||
STATUS=\$(docker inspect --format="{{.State.Health.Status}}" ${containerName} 2>/dev/null || echo "starting")
|
STATUS=\$(docker inspect --format="{{.State.Health.Status}}" ${containerName} 2>/dev/null || echo "starting")
|
||||||
[ "\$STATUS" = "healthy" ] && echo "${service} is healthy" && exit 0
|
|
||||||
|
if [ "\$STATUS" = "healthy" ]; then
|
||||||
|
echo "✅ ${service} is healthy"
|
||||||
|
exit 0
|
||||||
|
elif [ "\$STATUS" = "unhealthy" ]; then
|
||||||
|
echo "❌ ${service} is unhealthy"
|
||||||
|
echo "=== Last 100 lines of logs ==="
|
||||||
|
docker logs --tail 100 ${containerName}
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "⏳ ${service} status: \$STATUS (\$((i*10))s/200s)"
|
||||||
sleep 10
|
sleep 10
|
||||||
done
|
done
|
||||||
echo "${service} health check timeout"
|
|
||||||
|
echo "❌ ${service} health check timeout after 200s"
|
||||||
|
echo "=== Full logs ==="
|
||||||
|
docker logs ${containerName}
|
||||||
|
exit 1
|
||||||
'
|
'
|
||||||
"""
|
"""
|
||||||
|
|
||||||
echo "✅ ${service} deployed"
|
echo "✅ ${service} deployed successfully"
|
||||||
}
|
}
|
||||||
|
|
||||||
def getContainerName(String service) {
|
def getContainerName(String service) {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
JAVA_OPTS: "-Xms${GATEWAY_JVM_XMS} -Xmx${GATEWAY_JVM_XMX} ${JVM_COMMON_OPTS}"
|
JAVA_OPTS: "-Xms${GATEWAY_JVM_XMS} -Xmx${GATEWAY_JVM_XMX} ${JVM_COMMON_OPTS}"
|
||||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||||
|
SPRING_AUTOCONFIGURE_EXCLUDE: com.binarywang.spring.starter.wxjava.mp.config.WxMpServiceAutoConfiguration,com.binarywang.spring.starter.wxjava.mp.config.WxMpAutoConfiguration
|
||||||
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
||||||
REDIS_HOST: ${REDIS_HOST}
|
REDIS_HOST: ${REDIS_HOST}
|
||||||
REDIS_PORT: ${REDIS_PORT}
|
REDIS_PORT: ${REDIS_PORT}
|
||||||
@@ -41,11 +42,11 @@ services:
|
|||||||
memory: ${GATEWAY_MEMORY_LIMIT}
|
memory: ${GATEWAY_MEMORY_LIMIT}
|
||||||
cpus: '1.0'
|
cpus: '1.0'
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://172.17.16.14:48080/actuator/health"]
|
test: ["CMD", "curl", "-f", "http://localhost:48080/actuator/health"]
|
||||||
interval: ${HEALTH_CHECK_INTERVAL}
|
interval: 30s
|
||||||
timeout: ${HEALTH_CHECK_TIMEOUT}
|
timeout: 10s
|
||||||
retries: ${HEALTH_CHECK_RETRIES}
|
retries: 5
|
||||||
start_period: ${HEALTH_CHECK_START_PERIOD}
|
start_period: 90s
|
||||||
|
|
||||||
viewsh-module-system-server:
|
viewsh-module-system-server:
|
||||||
image: ${REGISTRY_HOST}/viewsh-module-system-server:${IMAGE_TAG}
|
image: ${REGISTRY_HOST}/viewsh-module-system-server:${IMAGE_TAG}
|
||||||
@@ -55,6 +56,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
JAVA_OPTS: "-Xms${SYSTEM_JVM_XMS} -Xmx${SYSTEM_JVM_XMX} ${JVM_COMMON_OPTS}"
|
JAVA_OPTS: "-Xms${SYSTEM_JVM_XMS} -Xmx${SYSTEM_JVM_XMX} ${JVM_COMMON_OPTS}"
|
||||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||||
|
SPRING_AUTOCONFIGURE_EXCLUDE: com.binarywang.spring.starter.wxjava.mp.config.WxMpServiceAutoConfiguration
|
||||||
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
||||||
MYSQL_HOST: ${MYSQL_HOST}
|
MYSQL_HOST: ${MYSQL_HOST}
|
||||||
MYSQL_PORT: ${MYSQL_PORT}
|
MYSQL_PORT: ${MYSQL_PORT}
|
||||||
@@ -74,11 +76,14 @@ services:
|
|||||||
memory: ${SYSTEM_MEMORY_LIMIT}
|
memory: ${SYSTEM_MEMORY_LIMIT}
|
||||||
cpus: '1.0'
|
cpus: '1.0'
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://172.17.16.14:48081/actuator/health"]
|
test: ["CMD", "curl", "-f", "http://localhost:48081"]
|
||||||
interval: ${HEALTH_CHECK_INTERVAL}
|
interval: 30s
|
||||||
timeout: ${HEALTH_CHECK_TIMEOUT}
|
timeout: 10s
|
||||||
retries: ${HEALTH_CHECK_RETRIES}
|
retries: 5
|
||||||
start_period: ${HEALTH_CHECK_START_PERIOD}
|
start_period: 90s
|
||||||
|
depends_on:
|
||||||
|
viewsh-gateway:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
viewsh-module-infra-server:
|
viewsh-module-infra-server:
|
||||||
image: ${REGISTRY_HOST}/viewsh-module-infra-server:${IMAGE_TAG}
|
image: ${REGISTRY_HOST}/viewsh-module-infra-server:${IMAGE_TAG}
|
||||||
@@ -88,6 +93,10 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
JAVA_OPTS: "-Xms${INFRA_JVM_XMS} -Xmx${INFRA_JVM_XMX} ${JVM_COMMON_OPTS}"
|
JAVA_OPTS: "-Xms${INFRA_JVM_XMS} -Xmx${INFRA_JVM_XMX} ${JVM_COMMON_OPTS}"
|
||||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||||
|
SPRING_AUTOCONFIGURE_EXCLUDE: com.binarywang.spring.starter.wxjava.mp.config.WxMpServiceAutoConfiguration
|
||||||
|
# XXL-JOB 配置(暂时注释,等部署 XXL-JOB Admin 后启用)
|
||||||
|
# XXL_JOB_ADMIN_ADDRESSES: ${XXL_JOB_ADMIN_ADDRESSES:-http://127.0.0.1:9090/xxl-job-admin}
|
||||||
|
# XXL_JOB_ACCESS_TOKEN: ${XXL_JOB_ACCESS_TOKEN:-default_token}
|
||||||
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
||||||
MYSQL_HOST: ${MYSQL_HOST}
|
MYSQL_HOST: ${MYSQL_HOST}
|
||||||
MYSQL_PORT: ${MYSQL_PORT}
|
MYSQL_PORT: ${MYSQL_PORT}
|
||||||
@@ -107,11 +116,14 @@ services:
|
|||||||
memory: ${INFRA_MEMORY_LIMIT}
|
memory: ${INFRA_MEMORY_LIMIT}
|
||||||
cpus: '1.0'
|
cpus: '1.0'
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://172.17.16.14:48082/actuator/health"]
|
test: ["CMD", "curl", "-f", "http://localhost:48082"]
|
||||||
interval: ${HEALTH_CHECK_INTERVAL}
|
interval: 30s
|
||||||
timeout: ${HEALTH_CHECK_TIMEOUT}
|
timeout: 10s
|
||||||
retries: ${HEALTH_CHECK_RETRIES}
|
retries: 5
|
||||||
start_period: ${HEALTH_CHECK_START_PERIOD}
|
start_period: 90s
|
||||||
|
depends_on:
|
||||||
|
viewsh-module-system-server:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
viewsh-module-iot-server:
|
viewsh-module-iot-server:
|
||||||
image: ${REGISTRY_HOST}/viewsh-module-iot-server:${IMAGE_TAG}
|
image: ${REGISTRY_HOST}/viewsh-module-iot-server:${IMAGE_TAG}
|
||||||
@@ -121,6 +133,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
JAVA_OPTS: "-Xms${IOT_SERVER_JVM_XMS} -Xmx${IOT_SERVER_JVM_XMX} ${JVM_COMMON_OPTS}"
|
JAVA_OPTS: "-Xms${IOT_SERVER_JVM_XMS} -Xmx${IOT_SERVER_JVM_XMX} ${JVM_COMMON_OPTS}"
|
||||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||||
|
SPRING_AUTOCONFIGURE_EXCLUDE: com.binarywang.spring.starter.wxjava.mp.config.WxMpServiceAutoConfiguration
|
||||||
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
||||||
MYSQL_HOST: ${MYSQL_HOST}
|
MYSQL_HOST: ${MYSQL_HOST}
|
||||||
MYSQL_PORT: ${MYSQL_PORT}
|
MYSQL_PORT: ${MYSQL_PORT}
|
||||||
@@ -141,11 +154,14 @@ services:
|
|||||||
memory: ${IOT_SERVER_MEMORY_LIMIT}
|
memory: ${IOT_SERVER_MEMORY_LIMIT}
|
||||||
cpus: '1.5'
|
cpus: '1.5'
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://172.17.16.14:48083/actuator/health"]
|
test: ["CMD", "curl", "-f", "http://localhost:48083"]
|
||||||
interval: ${HEALTH_CHECK_INTERVAL}
|
interval: 30s
|
||||||
timeout: ${HEALTH_CHECK_TIMEOUT}
|
timeout: 10s
|
||||||
retries: ${HEALTH_CHECK_RETRIES}
|
retries: 5
|
||||||
start_period: ${HEALTH_CHECK_START_PERIOD}
|
start_period: 90s
|
||||||
|
depends_on:
|
||||||
|
viewsh-module-infra-server:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
viewsh-module-iot-gateway:
|
viewsh-module-iot-gateway:
|
||||||
image: ${REGISTRY_HOST}/viewsh-module-iot-gateway:${IMAGE_TAG}
|
image: ${REGISTRY_HOST}/viewsh-module-iot-gateway:${IMAGE_TAG}
|
||||||
@@ -155,6 +171,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
JAVA_OPTS: "-Xms${IOT_GATEWAY_JVM_XMS} -Xmx${IOT_GATEWAY_JVM_XMX} ${JVM_COMMON_OPTS}"
|
JAVA_OPTS: "-Xms${IOT_GATEWAY_JVM_XMS} -Xmx${IOT_GATEWAY_JVM_XMX} ${JVM_COMMON_OPTS}"
|
||||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||||
|
SPRING_AUTOCONFIGURE_EXCLUDE: com.binarywang.spring.starter.wxjava.mp.config.WxMpServiceAutoConfiguration
|
||||||
# Nacos 配置
|
# Nacos 配置
|
||||||
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
||||||
NACOS_USERNAME: ${NACOS_USERNAME}
|
NACOS_USERNAME: ${NACOS_USERNAME}
|
||||||
@@ -219,11 +236,14 @@ services:
|
|||||||
memory: ${IOT_GATEWAY_MEMORY_LIMIT}
|
memory: ${IOT_GATEWAY_MEMORY_LIMIT}
|
||||||
cpus: '1.5'
|
cpus: '1.5'
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://172.17.16.14:48084/actuator/health"]
|
test: ["CMD", "curl", "-f", "http://localhost:48084"]
|
||||||
interval: ${HEALTH_CHECK_INTERVAL}
|
interval: 30s
|
||||||
timeout: ${HEALTH_CHECK_TIMEOUT}
|
timeout: 10s
|
||||||
retries: ${HEALTH_CHECK_RETRIES}
|
retries: 5
|
||||||
start_period: ${HEALTH_CHECK_START_PERIOD}
|
start_period: 90s
|
||||||
|
depends_on:
|
||||||
|
viewsh-module-iot-server:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
viewsh-module-ops-server:
|
viewsh-module-ops-server:
|
||||||
image: ${REGISTRY_HOST}/viewsh-module-ops-server:${IMAGE_TAG}
|
image: ${REGISTRY_HOST}/viewsh-module-ops-server:${IMAGE_TAG}
|
||||||
@@ -233,6 +253,7 @@ services:
|
|||||||
environment:
|
environment:
|
||||||
JAVA_OPTS: "-Xms${OPS_JVM_XMS} -Xmx${OPS_JVM_XMX} ${JVM_COMMON_OPTS}"
|
JAVA_OPTS: "-Xms${OPS_JVM_XMS} -Xmx${OPS_JVM_XMX} ${JVM_COMMON_OPTS}"
|
||||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||||
|
SPRING_AUTOCONFIGURE_EXCLUDE: com.binarywang.spring.starter.wxjava.mp.config.WxMpServiceAutoConfiguration
|
||||||
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
||||||
MYSQL_HOST: ${MYSQL_HOST}
|
MYSQL_HOST: ${MYSQL_HOST}
|
||||||
MYSQL_PORT: ${MYSQL_PORT}
|
MYSQL_PORT: ${MYSQL_PORT}
|
||||||
@@ -251,8 +272,34 @@ services:
|
|||||||
memory: ${OPS_MEMORY_LIMIT}
|
memory: ${OPS_MEMORY_LIMIT}
|
||||||
cpus: '0.5'
|
cpus: '0.5'
|
||||||
healthcheck:
|
healthcheck:
|
||||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://172.17.16.14:48085/actuator/health"]
|
test: ["CMD", "curl", "-f", "http://localhost:48085"]
|
||||||
interval: ${HEALTH_CHECK_INTERVAL}
|
interval: 30s
|
||||||
timeout: ${HEALTH_CHECK_TIMEOUT}
|
timeout: 10s
|
||||||
retries: ${HEALTH_CHECK_RETRIES}
|
retries: 5
|
||||||
start_period: ${HEALTH_CHECK_START_PERIOD}
|
start_period: 90s
|
||||||
|
depends_on:
|
||||||
|
viewsh-module-infra-server:
|
||||||
|
condition: service_healthy
|
||||||
|
|
||||||
|
# ============ XXL-JOB Admin (可选,暂时注释) ============
|
||||||
|
# 如需部署 XXL-JOB Admin,取消以下注释
|
||||||
|
# xxl-job-admin:
|
||||||
|
# image: xuxueli/xxl-job-admin:2.4.0
|
||||||
|
# container_name: aiot-xxl-job-admin
|
||||||
|
# restart: unless-stopped
|
||||||
|
# network_mode: host
|
||||||
|
# environment:
|
||||||
|
# TZ: ${TZ}
|
||||||
|
# PARAMS: >
|
||||||
|
# --spring.datasource.url=jdbc:mysql://${MYSQL_HOST}:${MYSQL_PORT}/${MYSQL_DATABASE}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
|
||||||
|
# --spring.datasource.username=${MYSQL_USER}
|
||||||
|
# --spring.datasource.password=${MYSQL_PASSWORD}
|
||||||
|
# --xxl.job.accessToken=${XXL_JOB_ACCESS_TOKEN:-default_token}
|
||||||
|
# volumes:
|
||||||
|
# - app-logs:/data/applogs
|
||||||
|
# healthcheck:
|
||||||
|
# test: ["CMD", "curl", "-f", "http://localhost:9090/xxl-job-admin"]
|
||||||
|
# interval: 30s
|
||||||
|
# timeout: 10s
|
||||||
|
# retries: 5
|
||||||
|
# start_period: 60s
|
||||||
|
|||||||
@@ -14,6 +14,8 @@ spring:
|
|||||||
config:
|
config:
|
||||||
namespace: ${NACOS_NAMESPACE:}
|
namespace: ${NACOS_NAMESPACE:}
|
||||||
group: ${NACOS_GROUP:DEFAULT_GROUP}
|
group: ${NACOS_GROUP:DEFAULT_GROUP}
|
||||||
|
lifecycle:
|
||||||
|
timeout-per-shutdown-phase: 30s # 增加优雅关闭超时时间
|
||||||
|
|
||||||
--- #################### 数据库相关配置 ####################
|
--- #################### 数据库相关配置 ####################
|
||||||
spring:
|
spring:
|
||||||
@@ -137,3 +139,21 @@ viewsh:
|
|||||||
enable: true
|
enable: true
|
||||||
security:
|
security:
|
||||||
mock-enable: false
|
mock-enable: false
|
||||||
|
|
||||||
|
--- #################### Quartz 优雅关闭配置 ####################
|
||||||
|
|
||||||
|
spring:
|
||||||
|
quartz:
|
||||||
|
properties:
|
||||||
|
org:
|
||||||
|
quartz:
|
||||||
|
scheduler:
|
||||||
|
makeSchedulerThreadDaemon: true
|
||||||
|
shutdownHook: clean_shutdown
|
||||||
|
threadPool:
|
||||||
|
threadNamePrefix: QuartzSchedulerThread
|
||||||
|
threadsInheritContextClassLoaderOfInitializingThread: true
|
||||||
|
plugin:
|
||||||
|
shutdownhook:
|
||||||
|
class: org.quartz.plugins.management.ShutdownHookPlugin
|
||||||
|
cleanShutdown: true
|
||||||
|
|||||||
Reference in New Issue
Block a user