Files
aiot-platform-cloud/docker-compose.core.yml
lzh 62978560c5
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
feat: iot-gateway 支持 Nacos 配置管理
- 在 application.yaml 中添加 Nacos config import
- 在 application-prod.yaml 中添加 Nacos 配置
- 在 docker-compose.core.yml 中注入 Nacos 环境变量
- 支持配置统一管理和动态刷新
- 与其他微服务保持架构一致性
2026-01-13 14:10:05 +08:00

255 lines
9.0 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.

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}
# Nacos 配置
NACOS_SERVER_ADDR: ${NACOS_HOST}:${NACOS_PORT}
NACOS_USERNAME: ${NACOS_USERNAME}
NACOS_PASSWORD: ${NACOS_PASSWORD}
NACOS_NAMESPACE: ${NACOS_NAMESPACE}
NACOS_GROUP: DEFAULT_GROUP
# Redis 配置
REDIS_HOST: ${REDIS_HOST}
REDIS_PORT: ${REDIS_PORT}
REDIS_PASSWORD: ${REDIS_PASSWORD}
REDIS_DATABASE: ${REDIS_DATABASE}
REDIS_TIMEOUT: 30000ms
# RocketMQ 配置
ROCKETMQ_NAMESRV_ADDR: ${ROCKETMQ_NAMESRV_HOST}:${ROCKETMQ_NAMESRV_PORT}
# IoT 消息总线配置
IOT_MESSAGE_BUS_TYPE: ${IOT_MESSAGE_BUS_TYPE}
# 设备 RPC 配置
IOT_RPC_URL: ${IOT_RPC_URL}
IOT_RPC_CONNECT_TIMEOUT: ${IOT_RPC_CONNECT_TIMEOUT}
IOT_RPC_READ_TIMEOUT: ${IOT_RPC_READ_TIMEOUT}
# 设备 Token 配置
IOT_TOKEN_SECRET: ${IOT_TOKEN_SECRET}
IOT_TOKEN_EXPIRATION: ${IOT_TOKEN_EXPIRATION}
# HTTP 协议配置
IOT_HTTP_ENABLED: ${IOT_HTTP_ENABLED}
IOT_HTTP_PORT: ${IOT_HTTP_PORT}
# MQTT 协议配置
IOT_MQTT_ENABLED: ${IOT_MQTT_ENABLED}
IOT_MQTT_PORT: ${IOT_MQTT_PORT}
IOT_MQTT_MAX_MESSAGE_SIZE: ${IOT_MQTT_MAX_MESSAGE_SIZE}
IOT_MQTT_CONNECT_TIMEOUT: ${IOT_MQTT_CONNECT_TIMEOUT}
IOT_MQTT_SSL_ENABLED: ${IOT_MQTT_SSL_ENABLED}
# TCP 协议配置
IOT_TCP_ENABLED: ${IOT_TCP_ENABLED}
IOT_TCP_PORT: ${IOT_TCP_PORT}
IOT_TCP_KEEPALIVE_TIMEOUT: ${IOT_TCP_KEEPALIVE_TIMEOUT}
IOT_TCP_MAX_CONNECTIONS: ${IOT_TCP_MAX_CONNECTIONS}
IOT_TCP_SSL_ENABLED: ${IOT_TCP_SSL_ENABLED}
# EMQX 协议配置
IOT_EMQX_ENABLED: ${IOT_EMQX_ENABLED}
IOT_EMQX_HTTP_PORT: ${IOT_EMQX_HTTP_PORT}
IOT_EMQX_MQTT_HOST: ${IOT_EMQX_MQTT_HOST}
IOT_EMQX_MQTT_PORT: ${IOT_EMQX_MQTT_PORT}
IOT_EMQX_MQTT_USERNAME: ${IOT_EMQX_MQTT_USERNAME}
IOT_EMQX_MQTT_PASSWORD: ${IOT_EMQX_MQTT_PASSWORD}
IOT_EMQX_MQTT_CLIENT_ID: ${IOT_EMQX_MQTT_CLIENT_ID}
IOT_EMQX_MQTT_SSL: ${IOT_EMQX_MQTT_SSL}
IOT_EMQX_TRUST_ALL: ${IOT_EMQX_TRUST_ALL}
IOT_EMQX_WILL_ENABLED: ${IOT_EMQX_WILL_ENABLED}
# 日志配置
LOG_FILE_PATH: /app/logs
LOG_LEVEL_IOT_GATEWAY: ${LOG_LEVEL_IOT_GATEWAY}
LOG_LEVEL_EMQX: ${LOG_LEVEL_EMQX}
LOG_LEVEL_HTTP: ${LOG_LEVEL_HTTP}
LOG_LEVEL_MQTT: ${LOG_LEVEL_MQTT}
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}