- env/staging.env.example → env/release.env.example(git mv 保留历史) - Jenkinsfile:STAGING_DEPLOY_HOST/PATH → RELEASE_*,日志和注释同步 - docker-compose.core.yml、5 个 application.yaml 注释里的 staging → release - TDengine database:aiot_platform_staging → aiot_platform_release - XXL-Job appname 后缀:-staging → -release 仅命名调整,不动任何运行行为。
235 lines
8.2 KiB
YAML
235 lines
8.2 KiB
YAML
# ============================================
|
||
# 后端核心服务 - 多环境通用 Compose
|
||
# ============================================
|
||
# 部署机调用:
|
||
# docker compose --env-file .env -f docker-compose.core.yml up -d
|
||
# 不传 --env-file 时,所有 ${VAR:-default} 落到 prod 默认值,行为与历史一致。
|
||
# 部署机的 .env 由运维手工维护,不进 git(敏感凭据)。
|
||
# ============================================
|
||
version: '3.8'
|
||
|
||
networks:
|
||
default:
|
||
name: 1panel-network
|
||
external: true
|
||
|
||
volumes:
|
||
app-logs:
|
||
|
||
# ============================================
|
||
# 公共环境变量片段(YAML anchor)
|
||
# ============================================
|
||
x-common-env: &common-env
|
||
TZ: Asia/Shanghai
|
||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-prod}
|
||
|
||
# ===== Nacos =====
|
||
NACOS_USERNAME: ${NACOS_USERNAME:-nacos}
|
||
NACOS_PASSWORD: ${NACOS_PASSWORD:-9oDxX~}e7DeP}
|
||
NACOS_ADDR: ${NACOS_ADDR:-172.17.16.7:8848}
|
||
NACOS_DISCOVERY_NAMESPACE: ${NACOS_DISCOVERY_NAMESPACE:-8efd6d96-de7f-4664-b28e-c2788ffa1395}
|
||
NACOS_CONFIG_NAMESPACE: ${NACOS_CONFIG_NAMESPACE:-8efd6d96-de7f-4664-b28e-c2788ffa1395}
|
||
|
||
# ===== MySQL =====
|
||
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_URL: ${MYSQL_URL:-jdbc:mysql://172.17.16.8:3306/aiot-platform-test?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&rewriteBatchedStatements=true}
|
||
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_USERNAME: ${MYSQL_USERNAME:-root}
|
||
SPRING_DATASOURCE_DYNAMIC_DATASOURCE_MASTER_PASSWORD: ${MYSQL_PASSWORD:-tKi8rfUJjVrf@}
|
||
|
||
# ===== Redis =====
|
||
SPRING_DATA_REDIS_HOST: ${REDIS_HOST:-172.17.16.13}
|
||
SPRING_DATA_REDIS_PORT: ${REDIS_PORT:-6379}
|
||
SPRING_DATA_REDIS_PASSWORD: ${REDIS_PASSWORD:-HkVZkVnn1}
|
||
|
||
# ===== RocketMQ =====
|
||
ROCKETMQ_NAMESRV_ADDR: ${ROCKETMQ_NAMESRV_ADDR:-rmq-4wd73bxpv.rocketmq.sh.qcloud.tencenttdmq.com:8080}
|
||
ROCKETMQ_ACCESS_KEY: ${ROCKETMQ_ACCESS_KEY:-ak4wd73bxpv55331e7c5b80}
|
||
ROCKETMQ_SECRET_KEY: ${ROCKETMQ_SECRET_KEY:-sk82108944bc0997f7}
|
||
|
||
# ===== XXL-Job =====
|
||
# 注意:XXL_JOB_EXECUTOR_APPNAME 用来区分 prod/release 在同一 admin 下的执行器组
|
||
# (后端 application.yaml 需要支持 ${XXL_JOB_EXECUTOR_APPNAME:${spring.application.name}})
|
||
XXL_JOB_ADMIN_ADDRESSES: ${XXL_JOB_ADMIN_ADDRESSES:-http://172.17.16.7:19090/xxl-job-admin}
|
||
XXL_JOB_EXECUTOR_IP: ${XXL_JOB_EXECUTOR_IP:-172.17.16.14}
|
||
XXL_JOB_EXECUTOR_APPNAME_SUFFIX: ${XXL_JOB_EXECUTOR_APPNAME_SUFFIX:-}
|
||
|
||
services:
|
||
viewsh-gateway:
|
||
image: ${REGISTRY_HOST:-172.17.16.7:5000}/viewsh-gateway:${IMAGE_TAG:-latest}
|
||
container_name: aiot-gateway
|
||
restart: on-failure:5
|
||
ports:
|
||
- "48080:48080"
|
||
environment:
|
||
<<: *common-env
|
||
JAVA_OPTS: "-Xms512m -Xmx1024m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
|
||
volumes:
|
||
- app-logs:/app/logs
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
memory: 1536m
|
||
cpus: '1.0'
|
||
healthcheck:
|
||
test: ["CMD", "curl", "-f", "http://localhost:48080/actuator/health"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 12
|
||
start_period: 120s
|
||
|
||
viewsh-module-system-server:
|
||
image: ${REGISTRY_HOST:-172.17.16.7:5000}/viewsh-module-system-server:${IMAGE_TAG:-latest}
|
||
container_name: aiot-system-server
|
||
restart: on-failure:5
|
||
ports:
|
||
- "48081:48081"
|
||
- "9901:9901"
|
||
environment:
|
||
<<: *common-env
|
||
JAVA_OPTS: "-Xms512m -Xmx1024m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
|
||
|
||
# 微信配置(system-server 独有)
|
||
WX_MP_APP_ID: ${WX_MP_APP_ID:-wx5b23ba7a5589ecbb}
|
||
WX_MP_SECRET: ${WX_MP_SECRET:-2a7b3b20c537e52e74afd395eb85f61f}
|
||
WX_MINIAPP_APPID: ${WX_MINIAPP_APPID:-wxc4598c446f8a9cb3}
|
||
WX_MINIAPP_SECRET: ${WX_MINIAPP_SECRET:-4a1a04e07f6a4a0751b39c3064a92c8b}
|
||
|
||
XXL_JOB_EXECUTOR_PORT: 9901
|
||
volumes:
|
||
- app-logs:/app/logs
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
memory: 1536m
|
||
cpus: '1.0'
|
||
healthcheck:
|
||
test: ["CMD", "curl", "-f", "http://localhost:48081/actuator/health"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 12
|
||
start_period: 120s
|
||
depends_on:
|
||
viewsh-gateway:
|
||
condition: service_healthy
|
||
|
||
viewsh-module-infra-server:
|
||
image: ${REGISTRY_HOST:-172.17.16.7:5000}/viewsh-module-infra-server:${IMAGE_TAG:-latest}
|
||
container_name: aiot-infra-server
|
||
restart: on-failure:5
|
||
ports:
|
||
- "48082:48082"
|
||
- "9902:9902"
|
||
environment:
|
||
<<: *common-env
|
||
JAVA_OPTS: "-Xms512m -Xmx1024m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
|
||
XXL_JOB_EXECUTOR_PORT: 9902
|
||
volumes:
|
||
- app-logs:/app/logs
|
||
healthcheck:
|
||
test: ["CMD", "curl", "-f", "http://localhost:48082/actuator/health"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 12
|
||
start_period: 120s
|
||
depends_on:
|
||
viewsh-module-system-server:
|
||
condition: service_healthy
|
||
|
||
viewsh-module-iot-server:
|
||
image: ${REGISTRY_HOST:-172.17.16.7:5000}/viewsh-module-iot-server:${IMAGE_TAG:-latest}
|
||
container_name: aiot-iot-server
|
||
restart: on-failure:5
|
||
ports:
|
||
- "48091:48091"
|
||
- "9903:9903"
|
||
environment:
|
||
<<: *common-env
|
||
JAVA_OPTS: "-Xms1024m -Xmx2048m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
|
||
|
||
# ===== 时序库(iot-server 独有)=====
|
||
# prod 用 TDengine(172.17.16.7:6041),release 用腾讯云 CTSDB(InfluxDB 兼容)
|
||
# 通过 TSDB_TYPE 切换:tdengine | ctsdb
|
||
TSDB_TYPE: ${TSDB_TYPE:-tdengine}
|
||
TDENGINE_HOST: ${TDENGINE_HOST:-172.17.16.7}
|
||
TDENGINE_PORT: ${TDENGINE_PORT:-6041}
|
||
TDENGINE_USERNAME: ${TDENGINE_USERNAME:-root}
|
||
TDENGINE_PASSWORD: ${TDENGINE_PASSWORD:-taosdata}
|
||
TDENGINE_DATABASE: ${TDENGINE_DATABASE:-aiot_platform}
|
||
CTSDB_URL: ${CTSDB_URL:-}
|
||
CTSDB_USERNAME: ${CTSDB_USERNAME:-}
|
||
CTSDB_PASSWORD: ${CTSDB_PASSWORD:-}
|
||
CTSDB_DATABASE: ${CTSDB_DATABASE:-}
|
||
|
||
XXL_JOB_EXECUTOR_PORT: 9903
|
||
volumes:
|
||
- app-logs:/app/logs
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
memory: 2560m
|
||
cpus: '1.5'
|
||
healthcheck:
|
||
test: ["CMD", "curl", "-f", "http://localhost:48091/actuator/health"]
|
||
interval: 10s
|
||
timeout: 5s
|
||
retries: 12
|
||
start_period: 120s
|
||
depends_on:
|
||
viewsh-module-infra-server:
|
||
condition: service_healthy
|
||
|
||
viewsh-module-iot-gateway:
|
||
image: ${REGISTRY_HOST:-172.17.16.7:5000}/viewsh-module-iot-gateway:${IMAGE_TAG:-latest}
|
||
container_name: aiot-iot-gateway
|
||
restart: on-failure:5
|
||
ports:
|
||
- "1883:1883"
|
||
- "8092:8092"
|
||
- "8091:8091"
|
||
environment:
|
||
IOT_TCP_ENABLED: "true"
|
||
TZ: Asia/Shanghai
|
||
SPRING_PROFILES_ACTIVE: ${SPRING_PROFILES_ACTIVE:-prod}
|
||
JAVA_OPTS: "-Xms1024m -Xmx2048m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
|
||
|
||
SPRING_DATA_REDIS_HOST: ${REDIS_HOST:-172.17.16.13}
|
||
SPRING_DATA_REDIS_PORT: ${REDIS_PORT:-6379}
|
||
SPRING_DATA_REDIS_PASSWORD: ${REDIS_PASSWORD:-HkVZkVnn1}
|
||
|
||
ROCKETMQ_NAMESRV_ADDR: ${ROCKETMQ_NAMESRV_ADDR:-rmq-4wd73bxpv.rocketmq.sh.qcloud.tencenttdmq.com:8080}
|
||
ROCKETMQ_ACCESS_KEY: ${ROCKETMQ_ACCESS_KEY:-ak4wd73bxpv55331e7c5b80}
|
||
ROCKETMQ_SECRET_KEY: ${ROCKETMQ_SECRET_KEY:-sk82108944bc0997f7}
|
||
|
||
VIEWSH_IOT_GATEWAY_RPC_URL: "http://aiot-iot-server:48091"
|
||
volumes:
|
||
- app-logs:/app/logs
|
||
deploy:
|
||
resources:
|
||
limits:
|
||
memory: 2560m
|
||
cpus: '1.5'
|
||
depends_on:
|
||
- viewsh-module-iot-server
|
||
|
||
viewsh-module-ops-server:
|
||
image: ${REGISTRY_HOST:-172.17.16.7:5000}/viewsh-module-ops-server:${IMAGE_TAG:-latest}
|
||
container_name: aiot-ops-server
|
||
restart: on-failure:5
|
||
ports:
|
||
- "48092:48092"
|
||
- "9904:9904"
|
||
environment:
|
||
<<: *common-env
|
||
JAVA_OPTS: "-Xms512m -Xmx1024m -XX:+UseContainerSupport -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/app/logs"
|
||
XXL_JOB_EXECUTOR_PORT: 9904
|
||
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
|