(window.webpackJsonp=window.webpackJsonp||[]).push([[497],{2888:function(e,t,a){e.exports=a.p+"assets/img/image40.6439a668.png"},8183:function(e,t,a){"use strict";a.r(t);var n=a(7),s=Object(n.a)({},(function(){var e=this,t=e._self._c;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h1",{attrs:{id:"容器部署"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#容器部署"}},[e._v("#")]),e._v(" 容器部署")]),e._v(" "),t("CopyCodeComponent"),e._v(" "),t("p",[e._v("容器部署需要安装docker容器，在可以连接互联网的情况下，可以在线安装Docker"),t("a",{attrs:{href:"https://blog.csdn.net/zhuocailing3390/article/details/121755719",target:"_blank",rel:"noopener noreferrer"}},[e._v("《Linux下Docker安装部署》"),t("OutboundLink")],1),e._v("，当遇到内网服务器没有办法进行在线安装时可以参考"),t("RouterLink",{attrs:{to:"/6.1.0/2认识IoTCenter/2.2安装部署/软件包安装/2.2.5附录/#docker容器的离线安装"}},[e._v("附录-Docker容器的离线安装")])],1),e._v(" "),t("h2",{attrs:{id:"平台镜像打包"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#平台镜像打包"}},[e._v("#")]),e._v(" 平台镜像打包")]),e._v(" "),t("p",[e._v("docker容器安装完成后进行平台镜像打包。")]),e._v(" "),t("p",[t("strong",[e._v("注：该教程只提供Linux系统的打包教程，其他平台读者可自行探索。")])]),e._v(" "),t("details",{staticClass:"custom-block details",attrs:{open:""}},[t("summary",[e._v("打包步骤")]),e._v(" "),t("ol",[t("li",[t("p",[e._v("下载IoTCenter源包。")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("到下载地址"),t("a",{attrs:{href:"https://www.ganweicloud.com/Download",target:"_blank",rel:"noopener noreferrer"}},[e._v("IoTCenter平台下载中心"),t("OutboundLink")],1),e._v("下载最新版本的IoTCenter软件压缩包。\n"),t("img",{attrs:{src:a(2888),alt:""}})])]),e._v(" "),t("li",[t("p",[e._v("命令")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("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\n")])])])])])]),e._v(" "),t("li",[t("p",[e._v("解压源包。")]),e._v(" "),t("ul",[t("li",[e._v("命令"),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("unzip IoTCenter.zip\n")])])])])])]),e._v(" "),t("li",[t("p",[e._v("创建镜像EntryPoint脚本runGW.sh。")]),e._v(" "),t("ul",[t("li",[e._v("代码"),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('#!/bin/bash\numask 027\n# start service\nnohup /opt/ganwei/IoTCenter/IoTCenterWeb/shell/restart.sh >/dev/null 2>&1 &\n\nsleep 15\necho "start service finish"\ntail -f /dev/null\n\n')])])])])])]),e._v(" "),t("li",[t("p",[e._v("创建打包Dockerfile。")]),e._v(" "),t("ul",[t("li",[e._v("代码"),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('# 基础镜像为微软官方aspnetcore6.0镜像\nFROM mcr.microsoft.com/dotnet/nightly/aspnet:6.0\n\n# 初始化时区为中国上海（东八区）\nENV TZ="Asia/Shanghai"\n\n# 去除apt安装缓存\nRUN apt update \\\n&& rm -rf /var/lib/apt/lists/*\n\nRUN mkdir -p /opt/ganwei/ \\\n&& chmod -R 755 /opt/ganwei\n\nCOPY IoTCenter /opt/ganwei/IoTCenter\nCOPY runGW.sh /opt/ganwei/\n\n# 修改.sh文件的权限，谨防越权\nRUN find /opt/ganwei/IoTCenter/IoTCenterWeb -name *.sh -exec chmod 550 {} \\;\n\nEXPOSE 44380\n\nWORKDIR /opt/ganwei/\n\n# 启动EntryPoint脚本\nCMD sh runGW.sh\n')])])])])])]),e._v(" "),t("li",[t("p",[e._v("部署中也许需要持久化一些文件，如：配置文件AlarmCenterProperties.xml；SQLite数据库文件（使用关系型数据库服务器MySQL等则忽略）；插件安装目录packages等。")]),e._v(" "),t("ul",[t("li",[t("p",[e._v("容器启动命令")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("docker run -itd \\\n -v /var/gwiot/CurveData:/opt/ganwei/IoTCenter/CurveData \\\n -v /var/gwiot/database:/opt/ganwei/IoTCenter/database \\\n -v /var/gwiot/data:/opt/ganwei/IoTCenter/data/ \\\n -v /var/gwiot/packages:/opt/ganwei/IoTCenter/IoTCenterWeb/packages \\\n -p 44380:44380 iotcenter:6.1.0\n")])])])]),e._v(" "),t("li",[t("p",[e._v("注意：由于映射目录时，目录文件会自动清除。所以在启动脚本中需做一些前置工作。")]),e._v(" "),t("ul",[t("li",[e._v("在启动时需先生成sqlite数据库文件。")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('DBPATH=/opt/ganwei/IoTCenter/database/Database.db\n\n# Linux系统需安装sqlite3包。\nif [ ! -f "$DBPATH" ]; then\n    cat /ganwei/config/sqlite.sql | sqlite3 $DBPATH\n    echo "execte initialized sql script"\nfi\n')])])]),t("ul",[t("li",[e._v("由其他备用目录复制配置文件AlarmCenterProperties.xml至运行目录")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("XMLDIR=/ganwei/data/\n\ncp -rf $XMLDIR/* /opt/ganwei/IoTCenter/data/\n")])])]),t("ul",[t("li",[e._v("由其他备用目录原始插件包至运行目录下。")])]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v("PKGDIR=/ganwei/packages/\n\ncp -rn /opt/ganwei/IoTCenter/IoTCenterWeb/originpackages/* $PKGDIR\n")])])])])])]),e._v(" "),t("li",[t("p",[e._v("最后的启动脚本runGW.sh")]),e._v(" "),t("div",{staticClass:"language- extra-class"},[t("pre",{pre:!0,attrs:{class:"language-text"}},[t("code",[e._v('#!/bin/bash\n    umask 027\n\n    PKGDIR=/ganwei/packages/\n    XMLDIR=/ganwei/data/\n    DBPATH=/opt/ganwei/IoTCenter/database/Database.db\n\n    # create database\n    if [ ! -f "$DBPATH" ]; then\n        cat /ganwei/config/sqlite.sql | sqlite3 $DBPATH\n        echo "execte initialized sql script"\n    fi\n\n    # copy xml\n    cp -rf $XMLDIR/* /opt/ganwei/IoTCenter/data/\n\n    # copy packages\n    cp -rn /opt/ganwei/IoTCenter/IoTCenterWeb/originpackages/* $PKGDIR\n    \n    # start service\n    nohup /opt/ganwei/IoTCenter/IoTCenterWeb/shell/restart.sh >/dev/null 2>&1 &\n\n    sleep 15\n    echo "start service finish"\n    tail -f /dev/null\n')])])])])])])],1)}),[],!1,null,null,null);t.default=s.exports}}]);