保姆级教程:用Docker Compose 10分钟在Linux服务器上部署FastBee物联网平台

张开发
2026/5/1 2:16:59 15 分钟阅读

分享文章

保姆级教程:用Docker Compose 10分钟在Linux服务器上部署FastBee物联网平台
10分钟极速部署FastBee物联网平台Docker Compose全栈解决方案在物联网项目落地的初期阶段环境部署往往是第一个技术拦路虎。传统部署方式需要逐个安装配置Java运行环境、MySQL数据库、Redis缓存、MQTT消息中间件等十余个组件不仅耗时费力还容易出现版本兼容性问题。FastBee作为一款开源的物联网中台系统通过Docker容器化技术将这一过程简化到极致——只需一个编排文件就能在Linux服务器上快速搭建生产级环境。1. 环境准备与架构解析FastBee采用微服务架构设计整体解决方案包含四大核心组件后端服务基于Spring Boot的物联网业务中台处理设备连接、规则引擎、数据存储等核心逻辑前端界面Vue.js构建的管理控制台提供设备管理、数据可视化和系统配置功能消息中间件支持Netty内置MQTT Broker和EMQX两种方案满足不同规模场景需求数据存储MySQL作为主数据库Redis缓存热点数据可选TDengine处理时序数据部署前需要确保服务器满足以下最低配置要求组件推荐配置最低要求CPU4核2核内存8GB4GB存储100GB SSD40GB操作系统Ubuntu 22.04 LTSCentOS 7 / Debian 10提示生产环境建议使用独立服务器或云主机避免资源争用导致性能问题2. 一键部署实战2.1 获取部署资源包通过官方Git仓库获取最新Docker编排文件和数据目录结构git clone https://gitee.com/zhuangpengli/fastbee-docker.git cd fastbee-docker cp -rf ./data /var关键目录说明/var/data/java存放后端服务JAR包/var/data/vue前端静态资源目录/var/data/mysql数据库持久化存储/var/data/emqxMQTT服务数据目录2.2 配置调整指南修改docker-compose.yml中的关键参数以适应实际环境version: 3.8 services: mysql: environment: MYSQL_ROOT_PASSWORD: your_secure_password # 修改数据库root密码 redis: command: redis-server --requirepass your_redis_password # 设置Redis访问密码 emqx: ports: - 1883:1883 # MQTT TCP端口 - 8083:8083 # MQTT WS端口 environment: EMQX_DASHBOARD__DEFAULT_USERNAME: admin EMQX_DASHBOARD__DEFAULT_PASSWORD: admin123 # 修改EMQX控制台密码常用配置项包括数据库连接参数Redis访问密码MQTT服务端口和认证信息服务监听IP地址如需绑定特定网卡2.3 权限设置与启动确保数据目录具有正确权限后启动服务chmod 777 -R /var/data # 授权操作需谨慎生产环境建议精细化控制 docker-compose up -d启动后通过以下命令检查各容器状态docker-compose ps # 查看服务运行状态 docker logs -f fastbee-admin # 跟踪后端服务日志3. 部署后配置与验证3.1 系统初始化访问http://服务器IP:80进入安装向导完成数据库连接测试管理员账号注册基础参数配置3.2 健康检查方案通过API端点验证各组件运行状态# 检查后端服务 curl -X GET http://localhost:8080/actuator/health # 测试MySQL连接 docker exec -it fastbee-mysql mysql -uroot -p -e SHOW DATABASES; # 验证Redis连通性 docker exec -it fastbee-redis redis-cli -a your_password PING # 测试MQTT发布订阅 mosquitto_sub -h localhost -t test -p 1883 -u fastbee -P fastbee mosquitto_pub -h localhost -t test -m hello -p 1883 -u fastbee -P fastbee3.3 性能调优建议对于高并发场景建议调整以下参数# 在docker-compose.yml中增加资源限制 services: fastbee-admin: deploy: resources: limits: cpus: 2 memory: 2G environment: JAVA_OPTS: -Xms1g -Xmx1g -XX:MaxMetaspaceSize512m emqx: deploy: resources: limits: cpus: 4 memory: 4G4. 常见问题排查指南4.1 端口冲突解决方案若遇到端口占用错误可通过以下步骤处理查询占用端口的进程netstat -tulnp | grep 8080修改docker-compose.yml中的端口映射ports: - 新端口:容器端口重启相关服务docker-compose restart fastbee-admin4.2 数据库连接失败处理典型错误现象及解决方法错误信息Communications link failure检查MySQL容器是否正常运行验证application.yml中的连接参数确认网络策略允许容器间通信错误信息Access denied for user核对用户名密码检查MySQL权限设置GRANT ALL PRIVILEGES ON *.* TO root% IDENTIFIED BY password; FLUSH PRIVILEGES;4.3 前端静态资源加载异常可能原因及修复方案Nginx配置问题docker exec -it fastbee-nginx nginx -t # 测试配置 docker exec -it fastbee-nginx nginx -s reload # 重载配置资源路径错误检查vue/.env.production中的BASE_URL设置确认dist目录已正确复制到/var/data/vue权限不足chown -R nginx:nginx /var/data/vue5. 进阶配置与扩展5.1 启用HTTPS安全访问使用Lets Encrypt证书配置SSL# 获取证书需提前配置域名解析 certbot certonly --standalone -d yourdomain.com # 修改Nginx配置 ssl_certificate /etc/letsencrypt/live/yourdomain.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/yourdomain.com/privkey.pem;5.2 集成TDengine时序数据库在docker-compose.yml中取消注释TDengine服务修改后端配置tdengine-server: enabled: true url: jdbc:TAOS://fastbee-tdengine:6030/fastbee_log username: root password: taosdata重启服务使配置生效5.3 集群化部署方案对于高可用需求可采用以下架构----------------- | 负载均衡 (Nginx) | ---------------- | -------------------------------- | | | -------------- ------------- ------------- | FastBee节点1 | | FastBee节点2 | | FastBee节点3 | -------------- ------------- ------------- | | | -------------- ------------- ------------- | Redis集群 | | MySQL主从 | | EMQX集群 | --------------- ------------- -------------关键配置要点使用Redis Cluster模式配置MySQL主从复制搭建EMQX集群后端服务通过SPRING_PROFILES_ACTIVEcluster启用集群模式6. 备份与迁移策略6.1 定期备份方案创建自动化备份脚本/var/backups/fastbee_backup.sh#!/bin/bash BACKUP_DIR/var/backups/fastbee_$(date %Y%m%d) mkdir -p $BACKUP_DIR # 备份MySQL docker exec fastbee-mysql mysqldump -uroot -p$MYSQL_ROOT_PASSWORD --all-databases $BACKUP_DIR/mysql.sql # 备份Redis docker exec fastbee-redis redis-cli -a $REDIS_PASSWORD save docker cp fastbee-redis:/data/dump.rdb $BACKUP_DIR/redis.rdb # 备份文件数据 rsync -a /var/data $BACKUP_DIR # 打包压缩 tar -czf $BACKUP_DIR.tar.gz $BACKUP_DIR设置cron定时任务0 3 * * * /var/backups/fastbee_backup.sh6.2 迁移到新服务器分步迁移指南在新服务器安装Docker和Docker Compose传输备份文件到新服务器恢复数据库docker exec -i fastbee-mysql mysql -uroot -p$MYSQL_ROOT_PASSWORD mysql.sql恢复Redis数据docker cp redis.rdb fastbee-redis:/data/dump.rdb docker restart fastbee-redis复制/var/data目录结构启动所有服务7. 监控与运维实践7.1 容器监控方案使用cAdvisorPrometheusGrafana搭建监控平台# 在docker-compose.yml中添加 services: cadvisor: image: gcr.io/cadvisor/cadvisor:v0.47.0 ports: - 8088:8080 volumes: - /:/rootfs:ro - /var/run:/var/run:rw - /sys:/sys:ro - /var/lib/docker/:/var/lib/docker:ro prometheus: image: prom/prometheus ports: - 9090:9090 volumes: - ./prometheus.yml:/etc/prometheus/prometheus.yml grafana: image: grafana/grafana ports: - 3000:3000示例prometheus.yml配置scrape_configs: - job_name: docker static_configs: - targets: [cadvisor:8080] - job_name: fastbee static_configs: - targets: [fastbee-admin:8080]7.2 日志收集方案使用ELK Stack集中管理日志services: elasticsearch: image: elasticsearch:8.7.0 environment: - discovery.typesingle-node ports: - 9200:9200 logstash: image: logstash:8.7.0 volumes: - ./logstash.conf:/usr/share/logstash/pipeline/logstash.conf depends_on: - elasticsearch kibana: image: kibana:8.7.0 ports: - 5601:5601 depends_on: - elasticsearch示例logstash.conf配置input { file { path /var/lib/docker/containers/*/*.log start_position beginning } } filter { grok { match { message %{TIMESTAMP_ISO8601:timestamp} %{LOGLEVEL:level} %{GREEDYDATA:message} } } } output { elasticsearch { hosts [elasticsearch:9200] } }8. 安全加固建议8.1 容器安全最佳实践最小权限原则services: fastbee-admin: user: 1000:1000 # 使用非root用户运行 read_only: true # 只读文件系统网络隔离docker network create fastbee-network docker-compose --project-name fastbee --file docker-compose.yml up -d镜像扫描docker scan fastbee-admin8.2 系统级防护措施定期更新基础镜像docker-compose pull docker-compose up -d --force-recreate配置防火墙规则ufw allow 80/tcp ufw allow 443/tcp ufw enable启用容器资源限制services: fastbee-admin: deploy: resources: limits: cpus: 1 memory: 1G reservations: memory: 512M9. 性能优化技巧9.1 JVM调优参数根据服务器配置调整JAVA_OPTSenvironment: JAVA_OPTS: -server -Xms2g -Xmx2g -XX:MetaspaceSize256m -XX:MaxMetaspaceSize512m -XX:UseG1GC -XX:MaxGCPauseMillis200关键参数说明-Xms和-Xmx堆内存初始大小和最大值-XX:MetaspaceSize元空间初始大小-XX:UseG1GC启用G1垃圾回收器-XX:MaxGCPauseMillis目标最大GC停顿时间9.2 数据库优化建议MySQL性能调整-- 调整InnoDB缓冲池大小需在my.cnf中设置 SET GLOBAL innodb_buffer_pool_size 2G; -- 优化表结构 ANALYZE TABLE tb_device; OPTIMIZE TABLE tb_device_data;Redis缓存策略# 配置redis.conf maxmemory 2gb maxmemory-policy allkeys-lru9.3 前端性能优化启用Nginx gzip压缩gzip on; gzip_types text/plain text/css application/json application/javascript text/xml;配置浏览器缓存location ~* \.(js|css|png|jpg|jpeg|gif|ico)$ { expires 1y; add_header Cache-Control public, no-transform; }启用HTTP/2listen 443 ssl http2;10. 版本升级与回滚10.1 平滑升级流程备份当前数据和配置拉取新版本镜像docker-compose pull停止并移除旧容器docker-compose down启动新版本服务docker-compose up -d执行数据库迁移脚本如有docker exec -it fastbee-admin java -jar app.jar db.migrate10.2 快速回滚方案回退到上一个版本的镜像docker tag fastbee-admin:previous fastbee-admin:latest恢复备份的数据库重启服务docker-compose restart10.3 蓝绿部署实践使用Docker Swarm实现零停机部署# 部署蓝组 docker stack deploy -c docker-compose-blue.yml fastbee-blue # 测试验证 curl http://blue.yourdomain.com/health # 切换流量 nginx -s reload # 下线绿组 docker stack rm fastbee-green配套Nginx配置示例upstream fastbee { server fastbee-blue:8080; server fastbee-green:8080 backup; } server { location / { proxy_pass http://fastbee; } }

更多文章