Files
aiot-platform-cloud/docker-compose.core.yml
lzh 7c45f56804
Some checks failed
Java CI with Maven / build (11) (push) Has been cancelled
Java CI with Maven / build (17) (push) Has been cancelled
Java CI with Maven / build (8) (push) Has been cancelled
chore(ci): 统一预发环境命名 staging → release
- 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

仅命名调整,不动任何运行行为。
2026-04-28 16:45:11 +08:00

235 lines
8.2 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# ============================================
# 后端核心服务 - 多环境通用 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 用 TDengine172.17.16.7:6041release 用腾讯云 CTSDBInfluxDB 兼容)
# 通过 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