FastBee文档 FastBee文档
  • 系统运行
  • 系统部署
  • Docker部署
  • 硬件设备接入
  • 视频设备接入
  • 硬件SDK说明
  • 小程序和App
  • 使用说明
  • 操作手册

    • 快速入门
    • 通用物模型
    • 产品管理
    • 设备管理
    • 场景联动
    • 视频监控
    • 固件开发
  • 其它

    • 平台主题
    • 物模型格式
    • 告警和场景格式
    • 消息流转
    • 使用TDengine
    • 常见问题
    • 相关文档
  • 物联网开发板
  • 智慧农业
  • 智能开关
  • 相关硬件

    • 硬件和开发板
商用授权
在线演示 (opens new window)
返回官网 (opens new window)
  • 系统运行
  • 系统部署
  • Docker部署
  • 硬件设备接入
  • 视频设备接入
  • 硬件SDK说明
  • 小程序和App
  • 使用说明
  • 操作手册

    • 快速入门
    • 通用物模型
    • 产品管理
    • 设备管理
    • 场景联动
    • 视频监控
    • 固件开发
  • 其它

    • 平台主题
    • 物模型格式
    • 告警和场景格式
    • 消息流转
    • 使用TDengine
    • 常见问题
    • 相关文档
  • 物联网开发板
  • 智慧农业
  • 智能开关
  • 相关硬件

    • 硬件和开发板
商用授权
在线演示 (opens new window)
返回官网 (opens new window)
  • 文档

    • 系统运行
    • 系统部署
    • Docker部署
      • 一、安装docker
        • Linux安装docker
        • Windows安装docker桌面端
        • Mac安装docker桌面端
      • 二、docker介绍
        • docker常用命令
        • docker网络模式
        • 创建网桥
        • docker-compose常用命令
      • 三、docker-compose安装系统
      • 四、docker安装系统
        • 安装Redis7.0
        • 安装Mysql5.7
        • 安装Emqx4.0
        • 安装JDK1.8
        • 安装Nginx
        • 安装TDengin(可选)
    • 硬件设备接入
    • 视频设备接入
    • 硬件SDK说明
    • 小程序和App
    • 使用说明
  • 操作手册

    • 快速入门
    • 通用物模型
    • 产品管理
    • 设备管理
    • 场景联动
    • 视频监控
    • 固件开发
  • 其他

    • 平台主题
    • 物模型格式
    • 告警和场景格式
    • 消息流转
    • 使用TDengine
    • 常见问题
    • 相关文档
目录

Docker部署

# 一、安装docker

提示

  • docker镜像默认从官方仓库获取,如果下载慢,可以配置为国内的镜像仓库,参考教程 (opens new window)
  • 安装桌面端,已经包含docker引擎和docker compose。服务器一般单独安装docker engine和docker compose

# Linux安装docker

  • docker桌面端(本地使用)
  • docker引擎(服务器使用)
  • 安装docker compose

# Windows安装docker桌面端

  • 参考教程(推荐安装WSL子系统和Windows Terminal,然后安装Docker)
  • docker安装教程

# Mac安装docker桌面端

  • docker安装教程

# 二、docker介绍

docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 操作系统机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低。

# docker常用命令

docker -v                                # 查看docker版本,检查是否安装成功
docker ps                                # 查看运行的容器
docker ps -a                             # 查看所有容器
docker images                            # 查看本地镜像
docker info                              # 查看docker的系统级信息
docker pull [image]                      # 拉取镜像
docker run  [image]                      # 运行容器
docker restart  [container]              # 重启容器
docker stop [container]                  # 停止容器
docker stats [container]                 # 查看容器资源使用情况
docker inspect [container]               # 查看容器元数据
docker logs -n 1000 [container]          # 查看容器的前1000条日志信息
docker exec -it [container] /bin/bash    # 进入运行中的容器内部
docker-compose up -d                     # 后台方式运行docker-compose.yml中容器
docker-compose down                      # 停止docker-compose.yml中容器

docker network create -d bridge wumei-bridge         # 创建一个新的网络,命名为wumei-bridge
docker network ls                                    # 显示所有网络
docker network connect wumei-bridge test             # test容器加入到自定义网络
docker inspect wumei-bridge                          # 查看wumei-bridge网络里的容器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# docker网络模式

docker中有5中网络模式,可以通过--net=***指定容器的网络模式。

bridge模式     # 默认,外界访问容器内的服务时,需要访问宿主机的 IP 以及宿主机的端口 port
host模式       # 容器的IP地址即为宿主机的IP地址
container模式  # 容器会共享其他容器的网络环境
overlay模式    # 跨主机通讯
none模式       # 不为容器构造任何网络环境,容器只能使用127.0.0.1的本机网络
1
2
3
4
5

# 创建网桥

网桥用于各个容器间通讯,如果各个容器是单独运行的,需要使用下面命令先创建网桥

docker network create -d bridge wumei-bridge
1

# docker-compose常用命令

docker-compose -v        # 查看docker-compose版本,检查是否安装成功
docker-compose up -d     # 构建并启动服务中容器
docker-compose down      # 停止并删除服务中容器
docker-compose ps        # 列出服务中所有容器
docker-compose start     # 启动服务中的容器
docker-compose stop      # 停止服务中正在运行的容器
docker-compose restart   # 重启服务中的容器
docker-compose logs      # 查看服务中容器的输出
docker-compose pull      # 拉取服务中依赖的镜像
docker-compose config    # 验证并查看compose文件配置
1
2
3
4
5
6
7
8
9
10

# 三、docker-compose安装系统

提示

  • 通过docker-compose -v ,检查是否已安装docker-compose
  • 以后重新部署项目,只需替换 server.jar 文件和 html 目录

docker-compose把项目依赖的应用和环境一起安装到服务器或本地,执行以下步骤完成安装:

  1. 先把项目中的 docker/data/ 文件夹上传到服务器或本地的 /var/ 目录下
  2. 进入服务器或本地的 /var/data/ 目录执行:docker-compose up -d 等待执行后完成部署
  3. 通过18083端口,访问EMQX控制台,默认账号密码 admin public,登录后在 管理 / 插件 菜单中启用 emqx_auth_http 、 emqx_web_hook、emqx_delayed_publish 插件
# 可先拉取服务中镜像,时间取决于网络情况,可配置docker采用国内镜像源
docker-compose pull
# 构建并启动服务中容器
docker-compose up -d  
# 停止并删除服务中容器
docker-compose down   
# 创建data文件夹
mkdir /var/data
# 文件夹分配读写可执行权限
sudo chmod 777 /var/data
1
2
3
4
5
6
7
8
9
10

# 四、docker安装系统

提示

  • 运行容器前,请先创建网桥,用于容器间通讯: docker network create -d bridge wumei-bridge
  • 前后端部署直接在宿主机替换文件,通过volume映射到容器内部。volume参数用于把容器数据保存到宿主机,是docker容器数据持久化保存的一种方式。
  • 后端部署替换宿主机 /var/data/java/server.jar 文件,前端部署替换 /var/data/nginx/html 目录下文件

# 安装Redis7.0

执行下面命令安装,其中requirepass 是访问密码

docker run \
--name redis \
--publish 6379:6379 \
--volume /var/data/redis:/usr/local/etc/redis  \
--volume /var/data/redis/data:/data  \
--network wumei-bridge \
--restart unless-stopped \
--detach \
redis:7.0.0 \
--requirepass "wumei-smart" \
--appendonly yes
1
2
3
4
5
6
7
8
9
10
11

# 安装Mysql5.7

提示

  • 官方的Mysql镜像默认采用latin编码,不支持中文,改为utf8编码,同时设置了时区和大小写敏感
  • MYSQL_ROOT_PASSWORD 是root用户密码
  1. 执行命令安装Mysql
docker run \
--name mysql \
--publish 3306:3306 \
--env TZ=Asia/Shanghai \
--env MYSQL_DATABASE="wumeismart" \
--env MYSQL_ROOT_PASSWORD=wumei-smart \
--volume /var/data/mysql/mysql:/var/lib/mysql \
--network wumei-bridge \
--restart unless-stopped \
--detach \
mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_unicode_ci \
--lower-case-table-names=1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  1. 进入容器内部,执行命令: docker exec -it mysql /bin/bash

  2. 修改编码,直接复制进去执行,exit用于退出容器

tee /etc/mysql/conf.d/mysql.cnf <<-'EOF'
[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
EOF
exit
1
2
3
4
5
6
7
8
  1. 使用Mysql管理工具(例如 Navcat),打开wumeismart数据库,导入项目中的springboot/sql/wumei-smart.sql 脚本。

# 安装Emqx4.0

提示

Emqx4.0作为系统的mqtt消息服务器,集成需要配置Http认证和Webhook

  1. 执行以下命令安装
docker run \
--name emqx \
--publish 1883:1883 \
--publish 8081:8081 \
--publish 8083:8083 \
--publish 8883:8883 \
--publish 8084:8084 \
--publish 18083:18083 \
--env EMQX_ALLOW__ANONYMOUS="false" \
--env TimeZone=Asia/Shanghai \
--volume /etc/localtime:/etc/localtime \
--network wumei-bridge \
--restart unless-stopped \
--detach \
emqx/emqx:v4.0.0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  1. 进入容器内部,执行命令: docker exec -it emqx /bin/sh
  2. 修改HTTP认证配置,复制进去执行
tee /opt/emqx/etc/plugins/emqx_auth_http.conf <<-'EOF'
auth.http.auth_req = http://java:8080/iot/tool/mqtt/auth
auth.http.auth_req.method = post
auth.http.auth_req.params = clientid=%c,username=%u,password=%P
auth.http.request.retry_times = 3
auth.http.request.retry_interval = 1s
auth.http.request.retry_backoff = 2.0
EOF
1
2
3
4
5
6
7
8
  1. 修改Webhook配置,复制进去执行
tee /opt/emqx/etc/plugins/emqx_web_hook.conf <<-'EOF'
web.hook.api.url = http://java:8080/iot/tool/mqtt/webhook
web.hook.rule.client.connected.1     = {"action": "on_client_connected"}
web.hook.rule.client.disconnected.1  = {"action": "on_client_disconnected"}
EOF
1
2
3
4
5
  1. 设置默认启用的插件列表,复制进去执行,exit用于退出容器
tee /opt/emqx/data/loaded_plugins <<-'EOF'
{emqx_management,true}.
{emqx_recon,true}.
{emqx_retainer,true}.
{emqx_dashboard,true}.
{emqx_rule_engine,true}.
{emqx_bridge_mqtt,false}.
{emqx_auth_http,true}.
{emqx_web_hook,true}.
{emqx_delayed_publish,true}.
EOF
exit
1
2
3
4
5
6
7
8
9
10
11
12
  1. 重启Emqx使配置生效 docker restart emqx

# 安装JDK1.8

提示

后端已有打包好的文件,可直接上传到服务器或本地的 /var/data/java 目录下,查看 >>

后端打包好的wumei-admin.jar文件,改为server.jar上传到 /var/data/java/ 目录下,然后执行以下命令

docker run \
--name java \
--publish 8080:8080 \
--volume /var/data/java/server.jar:/server.jar \
--volume /var/data/java/uploadPath:/uploadPath \
--volume /var/data/java/logs:/logs \
--volume /etc/localtime:/etc/localtime \
--env "TZ=Asia/Shanghai" \
--network wumei-bridge \
--restart unless-stopped \
--detach \
openjdk:8-jre \
java -jar /server.jar
1
2
3
4
5
6
7
8
9
10
11
12
13

# 安装Nginx

提示

前端已有打包好的文件,可直接上传到服务器或本地的 /var/data/nginx 目录下,查看 >>

  1. 前端打包后,dist文件夹中内容上传到 /var/data/nginx/html 目录下,然后执行以下命令
docker run \
--name nginx \
--volume /var/data/nginx/html:/usr/share/nginx/html \
--publish 80:80 \
--network wumei-bridge \
--restart unless-stopped \
--detach \
nginx:stable
1
2
3
4
5
6
7
8
  1. 进入容器内部,执行命令:docker exec -it nginx /bin/sh

  2. 修改配置文件,直接复制进去执行,exit用于退出容器

tee /etc/nginx/nginx.conf <<-'EOF'
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    gzip on;
    gzip_min_length  1k;
    gzip_buffers     16 64K;
    gzip_http_version 1.1;
    gzip_comp_level 5;
    gzip_types     text/plain application/javascript application/x-javascript text/javascript text/css application/xml;
    gzip_vary on;
    gzip_proxied   expired no-cache no-store private auth;
    gzip_disable   "MSIE [1-6]\.";
    server {
        listen       80;
        server_name  localhost;
        charset utf-8;
        location / {
            root   /usr/share/nginx/html;
            try_files $uri $uri/ /index.html;
            index  index.html index.htm;
        }
        location /prod-api/ {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://java:8080/;
        }
        location /api/v4/ {
            proxy_set_header Host $http_host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header REMOTE-HOST $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_pass http://emqx:8081/api/v4/;
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}
EOF
exit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
  1. 重启容器,使配置生效:docker restart nginx

# 安装TDengin(可选)

执行下面命令安装,设置hostname用户客户端连接,详细说明

docker run -d \
--name tdengine \
--hostname="fastbee" \
--volume /var/data/taos/log:/var/log/taos \
--volume /var/data/taos/data:/var/lib/taos \
--publish 6030-6049:6030-6049 \
--publish 6030-6049:6030-6049/udp \
--restart unless-stopped \
--volume /etc/localtime:/etc/localtime \
--env "TZ=Asia/Shanghai" \
tdengine/tdengine:2.6.0.12

1
2
3
4
5
6
7
8
9
10
11
12
上次更新: 2023/03/21, 01:13:49
系统部署
硬件设备接入

← 系统部署 硬件设备接入→

Theme by Vdoing | Copyright © 2021-2023 蜂信物联 | FastBee | AGPL-3.0 License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式