feat: 添加 Jenkins CI/CD 配置和部署脚本
- 添加 Jenkinsfile 支持智能增量构建 - 添加 Docker 多阶段构建模板 - 添加 Docker Compose 配置(连接 1Panel 中间件) - 添加部署、回滚、清理脚本 - 添加环境变量配置模板
This commit is contained in:
203
docker-compose.core.yml
Normal file
203
docker-compose.core.yml
Normal file
@@ -0,0 +1,203 @@
|
||||
version: '3.8'
|
||||
|
||||
# ============================================
|
||||
# AIOT Platform - 核心服务部署配置 (方案 A)
|
||||
# 连接到 1Panel 已安装的中间件
|
||||
# 总内存占用: ~4.5GB (仅应用服务)
|
||||
# ============================================
|
||||
|
||||
networks:
|
||||
aiot-network:
|
||||
driver: bridge
|
||||
|
||||
volumes:
|
||||
app-logs:
|
||||
|
||||
services:
|
||||
# ============ 应用服务 ============
|
||||
# 注意: 中间件(MySQL, Redis, Nacos, RocketMQ)已通过 1Panel 安装
|
||||
# 应用服务通过环境变量配置连接到宿主机的中间件
|
||||
|
||||
|
||||
viewsh-gateway:
|
||||
image: ${REGISTRY_HOST}/viewsh-gateway:${IMAGE_TAG}
|
||||
container_name: aiot-gateway
|
||||
restart: unless-stopped
|
||||
network_mode: host # 使用宿主机网络,直接访问 1Panel 中间件
|
||||
environment:
|
||||
JAVA_OPTS: "-Xms${GATEWAY_JVM_XMS} -Xmx${GATEWAY_JVM_XMX} ${JVM_COMMON_OPTS}"
|
||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
||||
REDIS_HOST: ${REDIS_HOST}
|
||||
REDIS_PORT: ${REDIS_PORT}
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
TZ: ${TZ}
|
||||
volumes:
|
||||
- app-logs:/app/logs
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: ${GATEWAY_MEMORY_LIMIT}
|
||||
cpus: '1.0'
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:48080/actuator/health"]
|
||||
interval: ${HEALTH_CHECK_INTERVAL}
|
||||
timeout: ${HEALTH_CHECK_TIMEOUT}
|
||||
retries: ${HEALTH_CHECK_RETRIES}
|
||||
start_period: ${HEALTH_CHECK_START_PERIOD}
|
||||
|
||||
viewsh-module-system-server:
|
||||
image: ${REGISTRY_HOST}/viewsh-module-system-server:${IMAGE_TAG}
|
||||
container_name: aiot-system-server
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
environment:
|
||||
JAVA_OPTS: "-Xms${SYSTEM_JVM_XMS} -Xmx${SYSTEM_JVM_XMX} ${JVM_COMMON_OPTS}"
|
||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
||||
MYSQL_HOST: ${MYSQL_HOST}
|
||||
MYSQL_PORT: ${MYSQL_PORT}
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
REDIS_HOST: ${REDIS_HOST}
|
||||
REDIS_PORT: ${REDIS_PORT}
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
TZ: ${TZ}
|
||||
volumes:
|
||||
- app-logs:/app/logs
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: ${SYSTEM_MEMORY_LIMIT}
|
||||
cpus: '1.0'
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:48081/actuator/health"]
|
||||
interval: ${HEALTH_CHECK_INTERVAL}
|
||||
timeout: ${HEALTH_CHECK_TIMEOUT}
|
||||
retries: ${HEALTH_CHECK_RETRIES}
|
||||
start_period: ${HEALTH_CHECK_START_PERIOD}
|
||||
|
||||
viewsh-module-infra-server:
|
||||
image: ${REGISTRY_HOST}/viewsh-module-infra-server:${IMAGE_TAG}
|
||||
container_name: aiot-infra-server
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
environment:
|
||||
JAVA_OPTS: "-Xms${INFRA_JVM_XMS} -Xmx${INFRA_JVM_XMX} ${JVM_COMMON_OPTS}"
|
||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
||||
MYSQL_HOST: ${MYSQL_HOST}
|
||||
MYSQL_PORT: ${MYSQL_PORT}
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
REDIS_HOST: ${REDIS_HOST}
|
||||
REDIS_PORT: ${REDIS_PORT}
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
TZ: ${TZ}
|
||||
volumes:
|
||||
- app-logs:/app/logs
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: ${INFRA_MEMORY_LIMIT}
|
||||
cpus: '1.0'
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:48082/actuator/health"]
|
||||
interval: ${HEALTH_CHECK_INTERVAL}
|
||||
timeout: ${HEALTH_CHECK_TIMEOUT}
|
||||
retries: ${HEALTH_CHECK_RETRIES}
|
||||
start_period: ${HEALTH_CHECK_START_PERIOD}
|
||||
|
||||
viewsh-module-iot-server:
|
||||
image: ${REGISTRY_HOST}/viewsh-module-iot-server:${IMAGE_TAG}
|
||||
container_name: aiot-iot-server
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
environment:
|
||||
JAVA_OPTS: "-Xms${IOT_SERVER_JVM_XMS} -Xmx${IOT_SERVER_JVM_XMX} ${JVM_COMMON_OPTS}"
|
||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
||||
MYSQL_HOST: ${MYSQL_HOST}
|
||||
MYSQL_PORT: ${MYSQL_PORT}
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
REDIS_HOST: ${REDIS_HOST}
|
||||
REDIS_PORT: ${REDIS_PORT}
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
ROCKETMQ_NAMESRV_ADDR: ${ROCKETMQ_NAMESRV_HOST}:${ROCKETMQ_NAMESRV_PORT}
|
||||
TZ: ${TZ}
|
||||
volumes:
|
||||
- app-logs:/app/logs
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: ${IOT_SERVER_MEMORY_LIMIT}
|
||||
cpus: '1.5'
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:48083/actuator/health"]
|
||||
interval: ${HEALTH_CHECK_INTERVAL}
|
||||
timeout: ${HEALTH_CHECK_TIMEOUT}
|
||||
retries: ${HEALTH_CHECK_RETRIES}
|
||||
start_period: ${HEALTH_CHECK_START_PERIOD}
|
||||
|
||||
viewsh-module-iot-gateway:
|
||||
image: ${REGISTRY_HOST}/viewsh-module-iot-gateway:${IMAGE_TAG}
|
||||
container_name: aiot-iot-gateway
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
environment:
|
||||
JAVA_OPTS: "-Xms${IOT_GATEWAY_JVM_XMS} -Xmx${IOT_GATEWAY_JVM_XMX} ${JVM_COMMON_OPTS}"
|
||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||
REDIS_HOST: ${REDIS_HOST}
|
||||
REDIS_PORT: ${REDIS_PORT}
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
ROCKETMQ_NAMESRV_ADDR: ${ROCKETMQ_NAMESRV_HOST}:${ROCKETMQ_NAMESRV_PORT}
|
||||
TZ: ${TZ}
|
||||
volumes:
|
||||
- app-logs:/app/logs
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: ${IOT_GATEWAY_MEMORY_LIMIT}
|
||||
cpus: '1.5'
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:48084/actuator/health"]
|
||||
interval: ${HEALTH_CHECK_INTERVAL}
|
||||
timeout: ${HEALTH_CHECK_TIMEOUT}
|
||||
retries: ${HEALTH_CHECK_RETRIES}
|
||||
start_period: ${HEALTH_CHECK_START_PERIOD}
|
||||
|
||||
viewsh-module-ops-server:
|
||||
image: ${REGISTRY_HOST}/viewsh-module-ops-server:${IMAGE_TAG}
|
||||
container_name: aiot-ops-server
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
environment:
|
||||
JAVA_OPTS: "-Xms${OPS_JVM_XMS} -Xmx${OPS_JVM_XMX} ${JVM_COMMON_OPTS}"
|
||||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE}
|
||||
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
|
||||
MYSQL_HOST: ${MYSQL_HOST}
|
||||
MYSQL_PORT: ${MYSQL_PORT}
|
||||
MYSQL_DATABASE: ${MYSQL_DATABASE}
|
||||
MYSQL_USER: ${MYSQL_USER}
|
||||
MYSQL_PASSWORD: ${MYSQL_PASSWORD}
|
||||
REDIS_HOST: ${REDIS_HOST}
|
||||
REDIS_PORT: ${REDIS_PORT}
|
||||
REDIS_PASSWORD: ${REDIS_PASSWORD}
|
||||
TZ: ${TZ}
|
||||
volumes:
|
||||
- app-logs:/app/logs
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
memory: ${OPS_MEMORY_LIMIT}
|
||||
cpus: '0.5'
|
||||
healthcheck:
|
||||
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:48085/actuator/health"]
|
||||
interval: ${HEALTH_CHECK_INTERVAL}
|
||||
timeout: ${HEALTH_CHECK_TIMEOUT}
|
||||
retries: ${HEALTH_CHECK_RETRIES}
|
||||
start_period: ${HEALTH_CHECK_START_PERIOD}
|
||||
Reference in New Issue
Block a user