Docker镜像打包部署ThingsBoard:从零到一,打造高效物联网平台

时间:2025-01-05 10:49 分类:C++教程

在数字化浪潮中,物联网(IoT)平台的建设无疑是企业智能化转型的关键一步。而ThingsBoard,作为一个开源的物联网平台,凭借其强大的功能和灵活的配置,成为了众多企业的首选。今天,我们将详细介绍如何通过Docker容器技术,将ThingsBoard从源码打包部署到本地或云服务器上,打造一个高效、稳定的物联网平台。

一、Dockerfile详解

首先,让我们深入了解一下ThingsBoard的Dockerfile。这个文件定义了如何构建Docker镜像,包括基础镜像的选择、工作目录的设置、环境变量的配置以及JAR文件的复制等步骤。

# 使用官方推荐的基础镜像
FROM thingsboard/openjdk17:bookworm-slim

# 添加维护者信息
LABEL maintainer="thingsboard"

# 创建必要的目录
RUN mkdir -p /opt/project/thingsboard/data /opt/project/thingsboard/conf

# 设置工作目录
WORKDIR /opt/project/thingsboard

# 暴露端口
EXPOSE 18080

# 设置环境变量
ENV TZ=Asia/Shanghai \
    LANG=C.UTF-8 \
    LC_ALL=C.UTF-8 \
    JAVA_OPTS="-Xms2g -Xmx4g -XX:+UseG1GC -XX:MaxGCPauseMillis=200" \
    LOGGING_CONFIG="/opt/project/thingsboard/conf/logback.xml"

# 定义构建时参数
ARG BUILD_VERSION

# 复制JAR文件到容器中
COPY ./thingsboard-${BUILD_VERSION}-boot.jar ./thingsboard.jar

# 容器启动命令
ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom \
    -Dlogging.config=${LOGGING_CONFIG} \
    -Dpkg.logFolder=${LOG_FOLDER} \
    -Dpkg.name=${LOG_FILE_NAME} \
    -jar thingsboard.jar ${JAVA_OPTS}

二、docker-compose.yml配置

接下来,我们来看看docker-compose.yml文件。这个文件用于定义多个Docker容器的组合,包括服务、网络和卷等配置。

version: '3.9.0'

services:
  thingsboard:
    build:
      context: .
      dockerfile: Dockerfile
      args:
        BUILD_VERSION: 3.9.0
    container_name: thingsboard
    image: thingsboard:3.9.0
    network_mode: "host"
    ports:
      - "18080:18080"
      - "11883:11883"
      - "5683-5688:5683-5688/udp"
    volumes:
      - ./data:/opt/project/thingsboard/data
      - ./conf:/opt/project/thingsboard/conf
      - ./logs:/opt/project/thingsboard/logs
    environment:
      TZ: Asia/Shanghai
      HTTP_BIND_PORT: 18080
      MQTT_BIND_PORT: 11883
      DEVICE_CONNECTIVITY_HTTP_PORT: 18080
      JWT_TOKEN_EXPIRATION_TIME: 9000
      JWT_REFRESH_TOKEN_EXPIRATION_TIME: 604800
      SPRING_DATASOURCE_URL: jdbc:postgresql://localhost:5432/thingsboard
      SPRING_DATASOURCE_USERNAME: postgres
      SPRING_DATASOURCE_PASSWORD: Liu971134228!
      CASSANDRA_URL: "127.0.0.1:9042"
      CASSANDRA_USE_CREDENTIALS: true
      CASSANDRA_USERNAME: cassandra
      CASSANDRA_PASSWORD: cassandra
      TS_KV_PARTITIONING: "MONTHS"
    caches:
      redis:
        host: localhost
        port: 6379
        db: 10

三、性能优化与扩展

在实际部署过程中,我们还需要考虑一些性能优化和扩展策略。例如,对于大规模设备接入的情况,可以通过增加Cassandra的分区数量来提高数据处理能力。此外,还可以利用Redis作为缓存层,减轻数据库的压力。

四、总结

通过以上步骤,我们成功地将ThingsBoard从源码打包部署到了本地或云服务器上。这个过程不仅让我们深入了解了Docker和docker-compose.yml文件的配置原理,还让我们在实际操作中体验到了物联网平台建设的乐趣。希望这篇文章能对大家有所帮助,让我们一起探索物联网的无限可能!

声明:

1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。

2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。

3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。

4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。

本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 0人参与,0条评论
查看更多

Copyright 2005-2024 yuanmayuan.com 源码园 版权所有 备案信息

声明: 本站非腾讯QQ官方网站 所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告