容器部署
# 容器部署
容器部署需要安装docker容器,在可以连接互联网的情况下,可以在线安装Docker《Linux下Docker安装部署》 (opens new window),当遇到内网服务器没有办法进行在线安装时可以参考附录-Docker容器的离线安装
# 平台镜像打包
docker容器安装完成后进行平台镜像打包。
注:该教程只提供Linux系统的打包教程,其他平台读者可自行探索。
打包步骤
下载IoTCenter源包。
到下载地址IoTCenter平台下载中心 (opens new window)下载最新版本的IoTCenter软件压缩包。
命令
curl -o IoTCenter.zip https://ganweicloud.obs.cn-north-4.myhuaweicloud.com/%E6%96%87%E6%A1%A3%E7%BD%91%E7%AB%99/IoTCenter%E7%89%88%E6%9C%AC/6.0.3/6.0.3-Linux_x86_64.zip
解压源包。
- 命令
unzip IoTCenter.zip
- 命令
创建镜像EntryPoint脚本runGW.sh。
- 代码
#!/bin/bash umask 027 # start service nohup /opt/ganwei/IoTCenter/IoTCenterWeb/shell/restart.sh >/dev/null 2>&1 & sleep 15 echo "start service finish" tail -f /dev/null
- 代码
创建打包Dockerfile。
- 代码
# 基础镜像为微软官方aspnetcore6.0镜像 FROM mcr.microsoft.com/dotnet/nightly/aspnet:6.0 # 初始化时区为中国上海(东八区) ENV TZ="Asia/Shanghai" # 去除apt安装缓存 RUN apt update \ && rm -rf /var/lib/apt/lists/* RUN mkdir -p /opt/ganwei/ \ && chmod -R 755 /opt/ganwei COPY IoTCenter /opt/ganwei/IoTCenter COPY runGW.sh /opt/ganwei/ # 修改.sh文件的权限,谨防越权 RUN find /opt/ganwei/IoTCenter/IoTCenterWeb -name *.sh -exec chmod 550 {} \; EXPOSE 44380 WORKDIR /opt/ganwei/ # 启动EntryPoint脚本 CMD sh runGW.sh
- 代码
部署中也许需要持久化一些文件,如:配置文件AlarmCenterProperties.xml;SQLite数据库文件(使用关系型数据库服务器MySQL等则忽略);插件安装目录packages等。
容器启动命令
docker run -itd \ -v /var/gwiot/CurveData:/opt/ganwei/IoTCenter/CurveData \ -v /var/gwiot/database:/opt/ganwei/IoTCenter/database \ -v /var/gwiot/data:/opt/ganwei/IoTCenter/data/ \ -v /var/gwiot/packages:/opt/ganwei/IoTCenter/IoTCenterWeb/packages \ -p 44380:44380 iotcenter:6.1.0
注意:由于映射目录时,目录文件会自动清除。所以在启动脚本中需做一些前置工作。
- 在启动时需先生成sqlite数据库文件。
DBPATH=/opt/ganwei/IoTCenter/database/Database.db # Linux系统需安装sqlite3包。 if [ ! -f "$DBPATH" ]; then cat /ganwei/config/sqlite.sql | sqlite3 $DBPATH echo "execte initialized sql script" fi
- 由其他备用目录复制配置文件AlarmCenterProperties.xml至运行目录
XMLDIR=/ganwei/data/ cp -rf $XMLDIR/* /opt/ganwei/IoTCenter/data/
- 由其他备用目录原始插件包至运行目录下。
PKGDIR=/ganwei/packages/ cp -rn /opt/ganwei/IoTCenter/IoTCenterWeb/originpackages/* $PKGDIR
最后的启动脚本runGW.sh
#!/bin/bash umask 027 PKGDIR=/ganwei/packages/ XMLDIR=/ganwei/data/ DBPATH=/opt/ganwei/IoTCenter/database/Database.db # create database if [ ! -f "$DBPATH" ]; then cat /ganwei/config/sqlite.sql | sqlite3 $DBPATH echo "execte initialized sql script" fi # copy xml cp -rf $XMLDIR/* /opt/ganwei/IoTCenter/data/ # copy packages cp -rn /opt/ganwei/IoTCenter/IoTCenterWeb/originpackages/* $PKGDIR # start service nohup /opt/ganwei/IoTCenter/IoTCenterWeb/shell/restart.sh >/dev/null 2>&1 & sleep 15 echo "start service finish" tail -f /dev/null
上次更新: 2024/2/1 18:33:32