DeviceHub项目远程ADB服务器配置与数据持久化实践
项目背景
DeviceHub是一个基于STF框架扩展的设备管理平台,用于远程管理和控制Android设备。近期项目进行了架构调整,将Provider组件从主机运行迁移到Docker容器中运行,这带来了一些配置上的变化。
配置变更要点
1. 远程ADB服务器配置
在旧版本中,用户可以通过直接在主机上运行命令来连接远程ADB服务器:
MONGODB_PORT_27017_TCP=mongodb://localhost:27017 stf provider --connect-sub "tcp://localhost:7250" --connect-push "tcp://localhost:7270" --storage-url "http://10.99.0.59:8082" --public-ip 10.99.0.59 --allow-remote --adb-host 10.99.0.112 --adb-port 5037
新版本推荐完全在Docker环境中运行,需要在docker-compose-prod.yaml中修改provider服务的配置:
devicehub-provider:
build: .
image: vkcom/devicehub
container_name: devicehub-provider
env_file:
- scripts/variables.env
command: stf provider --name devicehub-provider --allow-remote --adb-host 10.99.0.112 --adb-port 5037 --no-cleanup --connect-sub tcp://devicehub-triproxy-dev:7250 --connect-push tcp://devicehub-triproxy-dev:7270 --storage-url https://${STF_DOMAIN}:${STF_PORT}/ --public-ip https://${STF_DOMAIN}:${STF_PORT} --min-port=12010 --max-port=12100 --heartbeat-interval 10000 --screen-ws-url-pattern "wss://${STF_DOMAIN}:${STF_PORT}/d/devicehub-provider/<%= publicPort %>/"
2. ADB健康检查配置
对于使用远程ADB服务器的情况,还需要修改adbd服务的健康检查配置:
adbd:
container_name: adbd
image: "devicefarmer/adb:latest"
healthcheck:
test: nc -vz 10.99.0.112 5037 # 修改为实际的ADB服务器地址
常见问题解决方案
1. 设备服务安装失败
当出现INSTALL_FAILED_VERSION_DOWNGRADE错误时,表示设备上已安装了较新版本的STFService。解决方案:
- 手动卸载设备上的DeviceHubService应用
- 重新连接设备
- 系统会自动安装正确版本的服务
2. 数据持久化问题
早期版本中,用户和组数据在容器重启后会丢失。最新版本已通过以下方式解决:
- 为MongoDB配置了持久化存储卷
- 确保数据目录在容器重启后保持不变
- 修改了容器启动顺序,确保数据服务先于应用服务启动
最佳实践建议
-
升级流程:更新项目代码后,建议:
- 备份重要数据
- 停止并删除旧容器
- 重新创建容器以应用新配置
-
网络配置:
- 确保Docker容器能访问到远程ADB服务器
- 检查防火墙设置,开放必要的端口
-
设备管理:
- 定期检查设备上的Agent版本
- 遇到控制问题时,首先尝试重新安装Agent
通过以上配置和解决方案,用户可以顺利地将DeviceHub部署在Docker环境中,并实现稳定的远程设备管理功能。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



