Docker方式部署
说明
为实现 YFIOs 物联网平台的快速交付与轻量化部署,同时兼顾系统运行性能、业务数据安全与运维便捷性,平台采用模块化分层架构拆分部署:独立部署 MySQL、TDengine 两大数据库核心组件;业务整体打包为一体化 YFIOs Docker 镜像,内置 Redis、EMQX、Nginx、PM2、前端静态资源及后端服务。下文以 Ubuntu 22.4 服务器环境为例,详细讲解 YFIOs 物联网平台的标准落地部署流程。
准备工作
在开始部署前,请先在 Ubuntu 22.04 服务器中安装 Docker 及 Docker Compose 环境。
# 更新系统软件源
sudo apt update
# 安装 Docker
sudo apt install -y docker.io
# 安装 Docker Compose
sudo apt install -y docker-compose
# 启动 Docker 服务并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装是否成功(查看版本信息)
docker -v
docker-compose -v
为了便于快速安装,还需要配置国内镜像加速
# 写入国内多镜像加速源
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
# 配置公共 DNS(解决网络超时问题)
echo 'nameserver 223.5.5.5' | sudo tee /etc/resolv.conf > /dev/null
# 重启相关服务使配置生效
sudo systemctl daemon-reload
sudo systemctl restart systemd-resolved
sudo systemctl restart docker
1 MySQL 8.0 部署
1.1 创建MySQL 8.0项目总文件夹
我们统一把所有文件放在一个文件夹里,方便管理。
# 创建文件夹并进入该文件夹
mkdir -p ~/yfios-mysql && cd ~/yfios-mysql
MySQL 8.0整体目录结构
yfios-mysql/
├── data/ # 数据库数据目录(自动生成)
├── docker-compose.yml # Docker 服务配置
└── init-sql/ # 数据库初始化脚本
├── 00-init-db.sql # 库与用户创建(第一个执行)
├── yf_company.sql
├── yf_device.sql
├── yf_ram.sql
└── 其他业务表脚本
1.2 准备 docker-compose.yml 文件
进入 ~/yfios-mysql 目录后,可通过以下任意一种方式获取 docker-compose.yml:
方式 1:从官方压缩包中提取(推荐)
从下载地址获取完整配置包:https://www.yfios.net/download/deploy/mysql_config_files.rar
下载完成后解压,直接将 docker-compose.yml 复制到 ~/yfios-mysql/ 目录下即可。
方式 2:手动创建并编辑
运行
nano docker-compose.yml
粘贴以下内容:
version: '3.8'
services:
mysql8-yfios:
image: mysql:8.0
container_name: mysql8-yfios
restart: always
ports:
- "13306:3306"
environment:
MYSQL_ROOT_PASSWORD: yfsoft1018#mysql
MYSQL_INITDB_CHARSET: utf8mb4
MYSQL_INITDB_COLLATION: utf8mb4_0900_ai_ci
TZ: Asia/Shanghai
volumes:
- ./data:/var/lib/mysql
- ./init-sql:/docker-entrypoint-initdb.d
command:
--character-set-server=utf8mb4
--collation-server=utf8mb4_0900_ai_ci
--default-authentication-plugin=mysql_native_password
networks:
- yfios-network
networks:
yfios-network:
driver: bridge
保存并退出: Ctrl+O → 回车 → Ctrl+X
1.3 创建数据库初始化脚本文件夹
mkdir init-sql
将之前下载的mysql_config_files.rar压缩包解压,把包内所有 SQL 脚本(包括 00-init-db.sql 及全部 yf_xxx.sql 业务表文件)统一复制到 init-sql 目录中。
若尚未下载mysql_config_files.rar压缩文件,可通过以下地址获取:https://www.yfios.net/download/deploy/mysql_config_files.rar
下载并解压后,将压缩包内 init-sql 目录下的全部 SQL 文件,复制到 ~/yfios-mysql/init-sql/ 目录即可。
数据库初始化脚本目录结构
init-sql/ # 数据库初始化脚本
├── 00-init-db.sql # 库与用户创建(第一个执行)
├── yf_company.sql
├── yf_device.sql
├── yf_ram.sql
└── 其他业务表脚本
1.4 启动 MySQL 容器
# 进入项目目录
cd ~/yfios-mysql
# 后台运行
sudo docker-compose up -d
等待 10~20 秒,MySQL 会自动:
- 创建 root 账号
- 创建数据库 yfios-platform-db
- 创建用户 yfios 并授权
- 自动导入所有 init-sql 下的 sql 文件
- 字符集全部为 utf8mb4,排序规则 utf8mb4_0900_ai_ci

如果发现数据表没有创建,可以执行如下指令:
# 进入MySQL部署目录
cd ~/yfios-mysql
# 停止并删除当前MySQL容器
sudo docker-compose down
# 彻底删除旧数据库数据(必须执行,才能重新初始化)
sudo rm -rf ./data
# 重新创建并启动MySQL容器,自动重新执行所有SQL脚本
sudo docker-compose up -d
# 查看最后100行日志,检查是否初始化成功、有无报错
sudo docker logs mysql8-yfios --tail=100
1.5 验证是否部署成功
# 查看容器运行状态
sudo docker ps
# 查看容器日志(看到ready for connections 说明数据库启动完成)
sudo docker logs mysql8-yfios
# 连接数据库
sudo docker exec -it mysql8-yfios mysql -P 13306 -u yfios -p'yfsoft1018#mysql'
# 查看数据库
show databases;
# 切换到 yfios-platform-db 数据库
use `yfios-platform-db`;
# 查看数据表
show tables;

2 TDengine 3.3.6 部署
2.1 创建 TDengine 3.3.6 项目总文件夹
我们创建tdengine文件夹,方便管理。
# 创建文件夹并进入该文件夹
mkdir -p ~/tdengine && cd ~/tdengine
TDengine 整体目录结构
tdengine/
├── data/ # 时序数据库数据目录(自动生成)
└── docker-compose.yml # Docker 服务配置
2.2 准备 docker-compose.yml 文件
进入~/tdengine 目录后,可通过以下任意一种方式获取 docker-compose.yml:
方式 1:从官方压缩包中提取(推荐)
从下载地址获取完整配置包:https://www.yfios.net/download/deploy/tdengine_config_files.rar 下载完成后解压,直接将 docker-compose.yml 复制到 ~/tdengine/ 目录下即可。
方式 2:手动创建并编辑 docker-compose.yml 文件
运行
nano docker-compose.yml
粘贴以下内容:
version: '3'
services:
tdengine:
image: tdengine/tdengine:3.3.6.0
container_name: tdengine
restart: always
ports:
- "16030:6030"
- "16041:6041"
volumes:
- ./data:/var/lib/taos
保存并退出: Ctrl+O → 回车 → Ctrl+X
2.3 启动 tdengine 容器
一键启动tdengine容器
# 进入项目目录
cd ~/tdengine
# 后台运行
sudo docker-compose up -d
等待 10~20 秒,手动创建数据库和修改默认密码
# 创建业务数据库(原默认密码:taosdata)
sudo docker exec -it tdengine taos -s "CREATE DATABASE IF NOT EXISTS yfios_iot_db;"
# 修改密码
# 1. 进入容器并打开 taos 客户端
sudo docker exec -it tdengine taos
# 2. 在 taos 提示符下执行修改密码 SQL(注意末尾的分号)
ALTER USER root PASS 'yfsoft1018#taos';
# 3. 退出
exit;
# 使用指定的用户名 + 密码登录 TDengine,再创建数据库。
sudo docker exec -it tdengine taos -u root -pyfsoft1018#taos -s "CREATE DATABASE IF NOT EXISTS yfios_iot_db;"
# 查看所有TDengine数据库
sudo docker exec -it tdengine taos -u root -pyfsoft1018#taos -s "SHOW DATABASES;"
# 重启dengin
sudo docker restart tdengine
# 验证是否成功
curl -u root:yfsoft1018#taos -d "show databases;" http://127.0.0.1:16041/rest/sql
3 YFIOs 2.0.0 部署
3.1 创建项目文件夹
为保障数据持久化与日志可追溯,独立创建 YFIOs 项目专属目录,将业务数据、运行日志挂载至容器外部宿主机存储,脱离镜像生命周期独立保存,便于长期归档、备份与运维管理。
# 创建文件夹
mkdir -p ~/yfios
mkdir -p ~/yfios/data
mkdir -p ~/yfios/logs
mkdir -p ~/yfios/data/upload/firmware
mkdir -p ~/yfios/data/download/image/user
mkdir -p ~/yfios/data/download/image/company
chmod -R 777 ~/yfios/data
chmod -R 777 ~/yfios/logs
cd ~/yfios
目录结构
yfios/
├── data/
│ ├── upload/
│ │ └── firmware/ # 设备固件上传目录
│ └── download/
│ └── image/
│ ├── user/ # 用户图片存储
│ └── company/ # 企业图片存储
└── logs/ # 系统运行日志目录
3.2 下载yfios镜像文件
进入项目目录 ~/yfios,通过以下任意一种方式获取 YFIOs 2.0.0 离线 Docker 镜像,并放置到当前目录yfios/。
方式 1:通过官网直接下载(推荐)
- Ubuntu 系统使用命令下载(约3分钟):
cd ~/yfios
wget https://www.yfios.net/download/deploy/yfios-2.0.0-docker.tar.gz - Windows 系统直接访问下载: https://www.yfios.net/download/deploy/yfios-2.0.0-docker.tar.gz
方式 2:通过百度网盘下载盘
https://pan.baidu.com/s/1bCGD0nrNeZPNOIekSAMtUw?pwd=63yf
提取码: 63yf
3.3 加载yfios镜像文件
# 进入yfios目录
cd ~/yfios
# 解压镜像文件
sudo gunzip yfios-2.0.0-docker.tar.gz
# 加载镜像文件(约30秒)
sudo docker load -i yfios-2.0.0-docker.tar

3.4 启动YFIOs容器
假设当前 Ubuntu 服务器内网 IP 为 192.168.1.192,且本机已完成 MySQL、TDengine 服务部署并正常启动。执行以下命令,即可快速启动 YFIOs 业务容器。
sudo docker run -d \
--name yfios-platform \
--restart always \
-p 80:80 \
-p 1883:1883 \
-p 8083:8083 \
-p 18083:18083 \
-p 6379:6379 \
--add-host=host.docker.internal:host-gateway \
-e MQTT_MQTT_TCP="mqtt://192.168.1.197:1883" \
-e MQTT_EMQX_MQTT_WS="ws://192.168.1.197:8083" \
-e RDB_MYSQL_IOT_HOST="192.168.1.197" \
-e RDB_MYSQL_IOT_PORT="13306" \
-e RDB_MYSQL_IOT_USERNAME="root" \
-e RDB_MYSQL_IOT_PASSWORD="yfsoft1018#mysql" \
-e RDB_MYSQL_IOT_DATABASE="yfios-platform-db" \
-e RTB_TDENGINE_HOST="192.168.1.197" \
-e RTB_TDENGINE_PORT="16041" \
-e RTB_TDENGINE_USER="root" \
-e RTB_TDENGINE_PASSWD="yfsoft1018#taos" \
-e RTB_TDENGINE_DATABASENAME="yfios_iot_db" \
-v ~/yfios/data:/app/data \
-v ~/yfios/logs:/app/logs \
yfios:2.0.0
# 查看当前运行容器状
sudo docker ps
# 关闭并删除容器
sudo docker rm -f yfios-platform

4. 服务访问验证(YFIOs + EMQX)
YFIOs 平台已内置 EMQX 消息服务器:
- MQTT_TCP:对应 EMQX 设备 TCP 接入端口(1883)
- MQTT_EMQX_MQTT_WS:对应 EMQX WebSocket 接入端口(8083)
以上为设备接入必填参数,可根据现场实际网络环境自行调整。
等待服务初始化约十几秒后,浏览器访问前端地址:
4.1 YFIOs 平台访问
http://192.168.1.197/
若正常展示系统登录界面,即代表 YFIOs 平台部署完成。

- 默认登录账号: admin
- 默认登录密码:yf123456
4.2 EMQX 管理控制服务访问
http://192.168.1.197:18083/
若可正常进入控制台登录页面,即代表 EMQX 服务部署正常。

- 默认管理账号:admin
- 默认管理密码:public