thingsboard/summary/14-Docker目录全面分析.md

25 KiB
Raw Blame History

ThingsBoard Docker 目录全面分析

1. 目录概述

docker/ 目录是 ThingsBoard 微服务架构的 Docker Compose 部署配置目录,提供了完整的容器化部署方案。该目录包含:

  • Docker Compose 配置文件(模块化设计)
  • 部署管理脚本
  • 环境变量配置文件
  • 服务配置文件
  • 监控配置
  • 负载均衡配置

2. 目录结构

docker/
├── 脚本文件/
│   ├── docker-install-tb.sh          # 安装脚本(数据库初始化)
│   ├── docker-start-services.sh      # 启动所有服务
│   ├── docker-stop-services.sh       # 停止所有服务
│   ├── docker-remove-services.sh     # 删除服务容器
│   ├── docker-update-service.sh       # 更新服务
│   ├── docker-upgrade-tb.sh          # 数据库升级
│   ├── docker-create-log-folders.sh   # 创建日志目录
│   ├── docker-check-log-folders.sh   # 检查日志目录
│   └── compose-utils.sh              # 工具函数库
│
├── Docker Compose 配置文件/
│   ├── docker-compose.yml             # 主配置文件(定义所有服务)
│   ├── docker-compose.postgres.yml    # PostgreSQL 数据库配置
│   ├── docker-compose.hybrid.yml      # 混合模式PostgreSQL + Cassandra
│   ├── docker-compose.kafka.yml       # Kafka 消息队列配置
│   ├── docker-compose.confluent.yml   # Confluent Kafka 配置
│   ├── docker-compose.valkey.yml      # Valkey 单节点缓存配置
│   ├── docker-compose.valkey-cluster.yml  # Valkey 集群配置
│   ├── docker-compose.valkey-sentinel.yml # Valkey 哨兵模式配置
│   ├── docker-compose.edqs.yml       # 事件驱动查询服务配置
│   ├── docker-compose.prometheus-grafana.yml  # 监控服务配置
│   └── docker-compose.*.volumes.yml   # 数据卷配置
│
├── 环境变量配置文件/
│   ├── tb-node.env                    # 核心服务通用配置
│   ├── tb-node.postgres.env           # PostgreSQL 数据库配置
│   ├── tb-node.hybrid.env             # 混合模式数据库配置
│   ├── tb-mqtt-transport.env          # MQTT 传输服务配置
│   ├── tb-http-transport.env          # HTTP 传输服务配置
│   ├── tb-coap-transport.env          # CoAP 传输服务配置
│   ├── tb-lwm2m-transport.env         # LWM2M 传输服务配置
│   ├── tb-snmp-transport.env          # SNMP 传输服务配置
│   ├── tb-web-ui.env                  # Web UI 配置
│   ├── tb-js-executor.env             # JavaScript 执行器配置
│   ├── tb-vc-executor.env             # 版本控制执行器配置
│   ├── tb-edqs.env                    # EDQS 服务配置
│   ├── queue-kafka.env                # Kafka 队列配置
│   ├── queue-confluent.env            # Confluent 队列配置
│   ├── cache-valkey.env               # Valkey 单节点配置
│   ├── cache-valkey-cluster.env        # Valkey 集群配置
│   ├── cache-valkey-sentinel.env       # Valkey 哨兵配置
│   └── kafka.env                      # Kafka 服务配置
│
├── 配置目录/
│   ├── tb-node/                       # 核心服务配置
│   │   ├── conf/                      # 配置文件
│   │   └── log/                       # 日志目录
│   ├── tb-transports/                 # 传输服务配置
│   │   ├── mqtt/conf/                 # MQTT 配置
│   │   ├── http/conf/                 # HTTP 配置
│   │   ├── coap/conf/                 # CoAP 配置
│   │   ├── lwm2m/conf/                # LWM2M 配置
│   │   └── snmp/conf/                 # SNMP 配置
│   ├── tb-vc-executor/                # 版本控制执行器配置
│   ├── tb-edqs/                       # EDQS 服务配置
│   ├── haproxy/                       # HAProxy 负载均衡配置
│   │   └── config/
│   │       ├── haproxy.cfg            # HAProxy 主配置
│   │       ├── blocklist.txt          # 黑名单
│   │       └── trustlist.txt          # 白名单
│   └── monitoring/                    # 监控配置
│       ├── prometheus/
│       │   └── prometheus.yml        # Prometheus 配置
│       └── grafana/
│           ├── config.monitoring      # Grafana 配置
│           └── provisioning/          # 仪表板和数据源配置
│
└── README.md                          # 使用说明文档

3. 核心脚本分析

3.1 docker-install-tb.sh

作用: 执行 ThingsBoard 的初始安装,包括数据库 schema 初始化。

关键功能:

  • 启动数据库服务PostgreSQL/Cassandra
  • 运行 tb-core1 容器执行数据库初始化
  • 可选加载演示数据(--loadDemo 参数)

执行流程:

1. 读取 .env 文件配置
2. 根据配置组合 Docker Compose 文件
3. 启动数据库和缓存服务depends_on
4. 运行 tb-core1 容器,设置 INSTALL_TB=true
5. 执行数据库 schema 创建和初始化
6. 可选加载演示数据

使用示例:

# 基本安装
./docker-install-tb.sh

# 安装并加载演示数据
./docker-install-tb.sh --loadDemo

3.2 docker-start-services.sh

作用: 启动所有 ThingsBoard 微服务。

关键功能:

  • 组合所有 Docker Compose 配置文件
  • 启动所有服务(docker compose up -d
  • 支持 Docker Compose V1 和 V2

执行流程:

1. 读取 .env 配置
2. 根据配置选择对应的 Compose 文件
3. 组合命令docker compose -f docker-compose.yml -f ... up -d
4. 启动所有服务

3.3 docker-stop-services.sh

作用: 停止所有运行中的服务。

执行命令: docker compose stop

3.4 docker-remove-services.sh

作用: 停止并删除所有服务容器和数据卷。

执行命令: docker compose down -v

注意: 这会删除所有数据,谨慎使用!

3.5 docker-update-service.sh

作用: 更新特定服务或所有服务。

功能:

  • 拉取最新镜像(docker compose pull
  • 重新构建并启动服务(docker compose up -d --no-deps --build

使用示例:

# 更新所有服务
./docker-update-service.sh

# 更新特定服务
./docker-update-service.sh tb-core1 tb-mqtt-transport1

3.6 docker-upgrade-tb.sh

作用: 执行 ThingsBoard 数据库升级。

关键参数:

  • --fromVersion=[VERSION]: 指定从哪个版本升级

使用示例:

./docker-upgrade-tb.sh --fromVersion=3.6.0

3.7 compose-utils.sh

作用: 工具函数库,提供配置组合逻辑。

核心函数:

  1. additionalComposeArgs(): 根据 DATABASE 环境变量选择数据库配置

    • postgresdocker-compose.postgres.yml
    • hybriddocker-compose.hybrid.yml
  2. additionalComposeQueueArgs(): 根据 TB_QUEUE_TYPE 选择队列配置

    • kafkadocker-compose.kafka.yml
    • confluentdocker-compose.confluent.yml
  3. additionalComposeCacheArgs(): 根据 CACHE 选择缓存配置

    • valkeydocker-compose.valkey.yml
    • valkey-clusterdocker-compose.valkey-cluster.yml
    • valkey-sentineldocker-compose.valkey-sentinel.yml
  4. additionalComposeMonitoringArgs(): 根据 MONITORING_ENABLED 启用监控

    • truedocker-compose.prometheus-grafana.yml
  5. additionalComposeEdqsArgs(): 根据 EDQS_ENABLED 启用 EDQS

    • truedocker-compose.edqs.yml
  6. composeVersion(): 检测 Docker Compose 版本V1 或 V2

  7. permissionList(): 返回需要创建的目录和权限列表

  8. checkFolders(): 检查或创建日志目录并设置权限

4. Docker Compose 配置文件分析

4.1 主配置文件docker-compose.yml

作用: 定义所有 ThingsBoard 微服务的配置。

包含的服务:

基础设施服务

  • zookeeper: 服务发现和协调
    • 镜像: zookeeper:3.8.1
    • 端口: 2181

核心服务

  • tb-core1, tb-core2: 核心服务2个实例高可用

    • 镜像: thingsboard/tb-node:{version}
    • 服务类型: tb-core
    • 端口: 8080 (HTTP API), 7070 (Edge RPC)
    • 日志: 最大 200MB保留 30 个文件
  • tb-rule-engine1, tb-rule-engine2: 规则引擎服务2个实例

    • 镜像: thingsboard/tb-node:{version}
    • 服务类型: tb-rule-engine
    • 端口: 8080

传输服务

  • tb-mqtt-transport1, tb-mqtt-transport2: MQTT 传输2个实例

    • 镜像: thingsboard/tb-mqtt-transport:{version}
    • 端口: 1883
  • tb-http-transport1, tb-http-transport2: HTTP 传输2个实例

    • 镜像: thingsboard/tb-http-transport:{version}
    • 端口: 8081
  • tb-coap-transport: CoAP 传输1个实例

    • 镜像: thingsboard/tb-coap-transport:{version}
    • 端口: 5683/udp
  • tb-lwm2m-transport: LWM2M 传输1个实例

    • 镜像: thingsboard/tb-lwm2m-transport:{version}
    • 端口: 5685/udp, 5686/udp
  • tb-snmp-transport: SNMP 传输1个实例

    • 镜像: thingsboard/tb-snmp-transport:{version}
    • 端口: 1620/udp

前端服务

  • tb-web-ui1, tb-web-ui2: Web UI 服务2个实例
    • 镜像: thingsboard/tb-web-ui:{version}
    • 端口: 8080

辅助服务

  • tb-js-executor: JavaScript 执行器

    • 镜像: thingsboard/tb-js-executor:{version}
    • 副本数: 10高并发执行
  • tb-vc-executor1, tb-vc-executor2: 版本控制执行器2个实例

    • 镜像: thingsboard/tb-vc-executor:{version}
    • 端口: 8081

负载均衡

  • haproxy: 负载均衡器
    • 镜像: thingsboard/haproxy-certbot:2.2.33-alpine
    • 端口: 80 (HTTP), 443 (HTTPS), 1883 (MQTT), 7070 (Edge RPC), 9999 (统计)

4.2 数据库配置

docker-compose.postgres.yml

作用: PostgreSQL 模式配置,所有数据存储在 PostgreSQL。

包含服务:

  • postgres: PostgreSQL 16
    • 数据库: thingsboard
    • 数据卷: ./tb-node/postgres

适用场景: 中小型部署,设备数量 < 10,000

docker-compose.hybrid.yml

作用: 混合模式配置PostgreSQL 存储实体数据Cassandra 存储时序数据。

包含服务:

  • postgres: PostgreSQL 16实体数据
  • cassandra: Cassandra 5.0(时序数据)
    • 端口: 9042
    • 数据卷: ./tb-node/cassandra

适用场景: 大型部署,高写入量时序数据

4.3 消息队列配置

docker-compose.kafka.yml

作用: Kafka 消息队列配置。

包含服务:

  • kafka: Kafka 4.0(使用 KRaft 模式,不需要 ZooKeeper
    • 镜像: bitnamilegacy/kafka:4.0
    • 端口: 9092

特点: 所有 ThingsBoard 服务都依赖 Kafka 进行消息传递

docker-compose.confluent.yml

作用: Confluent Kafka 配置(生产环境推荐)。

特点: 提供企业级 Kafka 功能

4.4 缓存配置

docker-compose.valkey.yml

作用: Valkey 单节点缓存配置。

包含服务:

  • valkey: Valkey 8.0(单节点)
    • 镜像: bitnamilegacy/valkey:8.0
    • 端口: 6379
    • 数据卷: ./tb-node/valkey-data

适用场景: 开发测试环境

docker-compose.valkey-cluster.yml

作用: Valkey 集群配置(高可用)。

包含服务:

  • valkey-node-0 到 valkey-node-5: 6个节点3主3从
    • 镜像: bitnamilegacy/valkey-cluster:8.0
    • 副本因子: 1

适用场景: 生产环境,高可用要求

docker-compose.valkey-sentinel.yml

作用: Valkey 哨兵模式配置(自动故障转移)。

包含服务:

  • valkey-primary: 主节点
  • valkey-replica: 从节点
  • valkey-sentinel: 哨兵节点

适用场景: 生产环境,需要自动故障转移

4.5 其他配置

docker-compose.edqs.yml

作用: 事件驱动查询服务配置。

包含服务:

  • tb-edqs1, tb-edqs2: EDQS 服务2个实例

作用: 提供高效的时序数据查询服务

docker-compose.prometheus-grafana.yml

作用: 监控服务配置。

包含服务:

  • prometheus: Prometheus v3.1.0

    • 端口: 9090
    • 配置: ./monitoring/prometheus/prometheus.yml
  • grafana: Grafana

    • 端口: 3000
    • 默认登录: admin / foobar

启用方式: 设置 MONITORING_ENABLED=true.env 文件中

5. 环境变量配置文件分析

5.1 核心服务配置

tb-node.env

作用: 核心服务和规则引擎服务的通用配置。

关键配置:

ZOOKEEPER_ENABLED=true           # 启用 ZooKeeper 服务发现
ZOOKEEPER_URL=zookeeper:2181    # ZooKeeper 地址
JS_EVALUATOR=remote              # 使用远程 JS 执行器
TRANSPORT_TYPE=remote            # 使用远程传输服务
METRICS_ENABLED=true             # 启用监控指标
METRICS_ENDPOINTS_EXPOSE=prometheus  # 暴露 Prometheus 指标

tb-node.postgres.env

作用: PostgreSQL 数据库配置。

关键配置:

DATABASE_TS_TYPE=sql                                    # SQL 模式
SPRING_DRIVER_CLASS_NAME=org.postgresql.Driver         # PostgreSQL 驱动
SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard
SPRING_DATASOURCE_USERNAME=postgres
SPRING_DATASOURCE_PASSWORD=postgres

tb-node.hybrid.env

作用: 混合模式数据库配置。

关键配置:

DATABASE_TS_TYPE=cassandra                    # 时序数据使用 Cassandra
CASSANDRA_URL=cassandra:9042                  # Cassandra 地址
SPRING_DATASOURCE_URL=jdbc:postgresql://postgres:5432/thingsboard  # 实体数据使用 PostgreSQL

5.2 传输服务配置

tb-mqtt-transport.env

关键配置:

ZOOKEEPER_ENABLED=true
ZOOKEEPER_URL=zookeeper:2181
MQTT_BIND_ADDRESS=0.0.0.0
MQTT_BIND_PORT=1883
MQTT_TIMEOUT=10000
METRICS_ENABLED=true

tb-http-transport.env

关键配置:

HTTP_BIND_PORT=8081
WEB_APPLICATION_ENABLE=true

5.3 队列配置

queue-kafka.env

关键配置:

TB_QUEUE_TYPE=kafka
TB_KAFKA_SERVERS=kafka:9092

5.4 缓存配置

cache-valkey.env

关键配置:

CACHE_TYPE=redis           # 注意:配置名仍然是 redis兼容性
REDIS_HOST=valkey         # Valkey 服务地址

cache-valkey-cluster.env

关键配置:

CACHE_TYPE=redis-cluster
REDIS_CLUSTER_NODES=valkey-node-0:6379,valkey-node-1:6379,...

6. 配置组合机制

6.1 工作原理

ThingsBoard 使用 模块化 Docker Compose 配置,通过 .env 文件选择不同的配置组合:

  1. 读取 .env 文件,获取配置选择:

    DATABASE=postgres        # 或 hybrid
    CACHE=valkey            # 或 valkey-cluster, valkey-sentinel
    TB_QUEUE_TYPE=kafka     # 或 confluent
    MONITORING_ENABLED=false  # 或 true
    EDQS_ENABLED=false      # 或 true
    
  2. 脚本组合 Compose 文件

    docker compose \
      -f docker-compose.yml \                    # 主配置
      -f docker-compose.postgres.yml \           # 数据库配置
      -f docker-compose.kafka.yml \              # 队列配置
      -f docker-compose.valkey.yml \             # 缓存配置
      -f docker-compose.prometheus-grafana.yml \ # 监控(可选)
      up -d
    
  3. 服务继承配置

    • 主配置文件定义所有服务
    • 附加配置文件覆盖特定服务的配置(如数据库连接、缓存配置)

6.2 配置覆盖示例

主配置 (docker-compose.yml):

tb-core1:
  env_file:
    - tb-node.env

数据库配置 (docker-compose.postgres.yml):

tb-core1:
  env_file:
    - tb-node.postgres.env  # 追加数据库配置

最终效果: tb-core1 会加载 tb-node.envtb-node.postgres.env 两个文件

7. 部署架构

7.1 完整架构图

┌─────────────────────────────────────────────────────────────┐
│                    HAProxy (负载均衡器)                       │
│  Ports: 80 (HTTP), 443 (HTTPS), 1883 (MQTT), 7070 (RPC)    │
└────────────────────┬────────────────────────────────────────┘
                     │
     ┌───────────────┼───────────────┐
     │               │               │
     ▼               ▼               ▼
┌─────────┐   ┌─────────┐   ┌─────────┐
│Web UI 1 │   │Web UI 2 │   │MQTT Tx1 │   │MQTT Tx2 │
└────┬────┘   └────┬────┘   └────┬────┘   └────┬────┘
     │             │             │             │
     └─────────────┼─────────────┼─────────────┘
                   │             │
                   ▼             ▼
         ┌─────────────────────────┐
         │      Kafka Queue         │
         │    (消息队列)             │
         └───────────┬───────────────┘
                     │
         ┌───────────┼───────────┐
         │                       │
         ▼                       ▼
  ┌──────────┐          ┌──────────────┐
  │tb-core1  │          │tb-core2     │
  │tb-core2  │          │(核心服务)    │
  └────┬─────┘          └──────┬───────┘
       │                       │
       └───────────┬───────────┘
                   │
         ┌─────────┼─────────┐
         │                   │
         ▼                   ▼
  ┌──────────────┐   ┌──────────────┐
  │PostgreSQL    │   │  Cassandra   │
  │(实体数据)     │   │  (时序数据)   │
  └──────────────┘   └──────────────┘

基础服务:
  - ZooKeeper (服务发现)
  - Valkey (缓存)
  - JS Executor (JavaScript 执行)

7.2 服务依赖关系

启动顺序depends_on:
1. ZooKeeper
2. PostgreSQL / Cassandra
3. Kafka
4. Valkey
5. tb-js-executor
6. tb-core1, tb-core2
7. tb-rule-engine1, tb-rule-engine2
8. 传输服务tb-mqtt-transport, ...
9. tb-web-ui
10. HAProxy

8. 使用流程

8.1 首次部署

# 1. 配置 .env 文件
cat > .env << EOF
DATABASE=postgres          # 或 hybrid
CACHE=valkey              # 或 valkey-cluster
TB_QUEUE_TYPE=kafka       # 或 confluent
MONITORING_ENABLED=false  # 或 true
EDQS_ENABLED=false        # 或 true
EOF

# 2. 创建日志目录
./docker-create-log-folders.sh

# 3. 安装(初始化数据库)
./docker-install-tb.sh --loadDemo

# 4. 启动所有服务
./docker-start-services.sh

# 5. 访问 Web UI
# http://localhost
# 默认账号: sysadmin@thingsboard.org / sysadmin

8.2 日常操作

# 启动服务
./docker-start-services.sh

# 停止服务
./docker-stop-services.sh

# 查看日志
docker-compose logs -f tb-core1

# 更新服务
./docker-update-service.sh tb-core1

# 查看服务状态
docker-compose ps

8.3 升级流程

# 1. 停止服务
./docker-stop-services.sh

# 2. 执行升级
./docker-upgrade-tb.sh --fromVersion=3.6.0

# 3. 启动服务
./docker-start-services.sh

9. 数据持久化

9.1 数据卷映射

所有数据都映射到 docker/ 目录下:

docker/
├── tb-node/
│   ├── postgres/        # PostgreSQL 数据
│   ├── cassandra/        # Cassandra 数据(混合模式)
│   ├── valkey-data/      # Valkey 数据(单节点)
│   ├── valkey-cluster-data-0/  # Valkey 集群数据
│   └── log/             # 应用日志
├── tb-transports/
│   └── */log/           # 传输服务日志
└── haproxy/
    ├── letsencrypt/     # SSL 证书
    └── certs.d/         # 自定义证书

9.2 备份建议

# 备份 PostgreSQL 数据
docker exec postgres pg_dump -U postgres thingsboard > backup.sql

# 备份 Cassandra 数据
# 使用 Cassandra 的备份工具

# 备份配置
tar -czf tb-config-backup.tar.gz docker/tb-node/conf docker/tb-transports/*/conf

10. 监控和日志

10.1 日志配置

所有服务都配置了日志轮转:

  • 最大文件大小: 200MB
  • 保留文件数: 30
  • 总日志大小: 6GB (200MB × 30)

10.2 Prometheus 监控

启用监控后:

预置仪表板:

  • Core Service Metrics
  • Rule Engine Metrics
  • Transport Metrics
  • Database Metrics

11. 高可用配置

11.1 服务冗余

  • tb-core: 2个实例
  • tb-rule-engine: 2个实例
  • tb-mqtt-transport: 2个实例
  • tb-http-transport: 2个实例
  • tb-web-ui: 2个实例
  • tb-js-executor: 10个副本高并发

11.2 负载均衡

HAProxy 在所有服务实例间进行负载均衡:

  • HTTP/HTTPS 流量 → Web UI 和 Core API
  • MQTT 连接 → MQTT Transport
  • Edge RPC → Core Service

11.3 数据库高可用

  • PostgreSQL: 可以配置主从复制(需要额外配置)
  • Cassandra: 集群模式(多节点)
  • Valkey: 集群或哨兵模式

12. 安全配置

12.1 网络隔离

  • 所有服务在同一个 Docker 网络中
  • 数据库端口不映射到宿主机(仅内部访问)
  • 通过 HAProxy 统一对外暴露端口

12.2 SSL/TLS

HAProxy 支持 SSL/TLS

  • Let's Encrypt 自动证书(./haproxy/letsencrypt/
  • 自定义证书(./haproxy/certs.d/

12.3 密码配置

注意: 默认配置使用明文密码,生产环境需要修改:

  • PostgreSQL 密码: tb-node.postgres.env
  • Valkey 密码: docker-compose.valkey-cluster.yml

13. 常见配置组合

13.1 开发测试环境

DATABASE=postgres
CACHE=valkey
TB_QUEUE_TYPE=kafka
MONITORING_ENABLED=false
EDQS_ENABLED=false

特点: 简单配置,资源占用少

13.2 生产环境(小型)

DATABASE=postgres
CACHE=valkey-sentinel
TB_QUEUE_TYPE=kafka
MONITORING_ENABLED=true
EDQS_ENABLED=false

特点: 高可用缓存,启用监控

13.3 生产环境(大型)

DATABASE=hybrid
CACHE=valkey-cluster
TB_QUEUE_TYPE=confluent
MONITORING_ENABLED=true
EDQS_ENABLED=true

特点: 混合数据库,集群缓存,企业级队列,启用监控和 EDQS

14. 最佳实践

14.1 配置管理

  1. 使用环境变量: 敏感信息通过环境变量传递
  2. 版本控制: 配置文件纳入版本控制
  3. 分离配置: 不同环境使用不同的 .env 文件

14.2 资源规划

  • 内存: 至少 8GB推荐 16GB+
  • CPU: 至少 4 核(推荐 8 核+
  • 磁盘: 至少 50GB根据数据量调整

14.3 监控建议

  1. 启用监控: 生产环境必须启用 Prometheus + Grafana
  2. 设置告警: 配置 Grafana 告警规则
  3. 日志收集: 考虑使用 ELK 或 Loki 收集日志

14.4 备份策略

  1. 数据库备份: 定期备份 PostgreSQL 和 Cassandra
  2. 配置备份: 备份所有配置文件
  3. 测试恢复: 定期测试备份恢复流程

15. 故障排查

15.1 常见问题

问题1: 服务启动失败

# 检查日志
docker-compose logs tb-core1

# 检查依赖服务
docker-compose ps

# 检查网络
docker network ls

问题2: 数据库连接失败

# 检查数据库是否运行
docker-compose ps postgres

# 检查数据库日志
docker-compose logs postgres

# 测试连接
docker exec -it postgres psql -U postgres -d thingsboard

问题3: 端口冲突

# 检查端口占用
netstat -tulpn | grep 8080

# 修改端口映射(在 docker-compose.yml 中)
ports:
  - "8081:8080"  # 将宿主机端口改为 8081

15.2 调试技巧

# 进入容器
docker exec -it tb-core1 bash

# 查看环境变量
docker exec tb-core1 env

# 查看配置文件
docker exec tb-core1 cat /config/thingsboard.yml

# 实时查看日志
docker-compose logs -f --tail=100 tb-core1

16. 总结

16.1 Docker 目录的核心价值

  1. 模块化设计: 通过组合不同的 Compose 文件,支持灵活的配置
  2. 一键部署: 脚本封装了复杂的部署流程
  3. 生产就绪: 包含高可用、监控、负载均衡等生产环境必需组件
  4. 易于维护: 清晰的目录结构和配置分离

16.2 关键特点

  • 微服务架构: 服务拆分,独立部署和扩展
  • 高可用: 关键服务多实例部署
  • 灵活配置: 支持多种数据库、队列、缓存选择
  • 监控集成: 内置 Prometheus + Grafana
  • 负载均衡: HAProxy 统一入口
  • 容器化: 完全基于 Docker易于部署和管理

16.3 适用场景

  • 生产环境: 微服务模式,高可用部署
  • 开发测试: 快速搭建完整环境
  • 演示环境: 支持加载演示数据
  • CI/CD: 可以集成到持续集成流程

通过这个 Docker 目录ThingsBoard 提供了一个 企业级的容器化部署方案,大大简化了部署和运维工作。