在数字化浪潮中,物联网(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小时内删除,不允许用于商业用途,否则法律问题自行承担。
Copyright 2005-2024 yuanmayuan.com 【源码园】 版权所有 备案信息
声明: 本站非腾讯QQ官方网站 所有软件和文章来自互联网 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告