一、系统环境:CentOS7
centos所有版本下载地址:http://mirrors.aliyun.com/centos/
查看CentOS的版本号:cat /etc/centos-release
查询操作系统内核版本信息:uname -r
查看操作系统位数:getconf LONG_BIT
关闭防火墙:systemctl stop firewalld.service
查看防火墙状态:systemctl status firewalld.service
Active行存在disavtive或dead的字样,说明防火墙已经关闭
二、CentOS7部署Docker
1、安装必要的系统工具
yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加软件源信息
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、更新并安装docker-ce
yum makecache fast
yum -y install docker-ce
4、设置开机时自动启动(可不设置开机自动启动)
systemctl enable docker
5、查看docker运行状态
systemctl status docker
6、查看已安装的docker-ce版本信息
7、查看docker所有运行的容器
8、 以上docker安装完成,接下来就是需要docker加速器配置了。至于是为什么需要镜像加速呢?因为你在中国(你懂得)
在安装的时候我添加的是阿里的软件源,这里我也用阿里云的镜像加速。
首先,打开阿里云网站:https://cr.console.aliyun.com
其次,打开网页中 镜像中心--镜像加速器,默认会生成属于你个人的一个加速器地址
这里我将命令写在一个shell中,内容如下(因为我知道docker安装的时候默认安装在/etc/docker下,所以我就不再递归创建)
将shell脚本加上可执行权限,执行以下即可完成了镜像加速的配置并重新加载的配置文件和重启了docker。
至此,Docker的安装搞定。
问题:
1、docker报错Get https://registry-1.docker.io/v2/: x509: certificate has expired or is not yet valid
解决办法:同步一下时间:ntpdate cn.pool.ntp.org
三、使用Docker部署STF安卓设备管理平台
第一步拉取镜像
1、拉取STF镜像:docker pull openstf/stf:latest
2、拉取adb镜像:docker pull sorccu/adb:latest
3、拉取rethinkdb镜像:docker pull rethinkdb:latest
4、查看拉取下来的镜像:docker images
第二步启动镜像
1、启动rethinkdb数据库
docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 500 --http-port 8090
2、启动adb服务
docker run -d --name adbd --privileged -v /dev/bus/usb:/dev/bus/usb --net host sorccu/adb:latest
3、启动STF安卓设备管理平台
本地启动:docker run -d --name stf --net host openstf/stf stf local --allow-remote
可远程访问:docker run -d --name stf --net host openstf/stf stf local --allow-remote --public-ip 10.117.34.33
4、通过浏览器访问web页面,默认端口是7100。登录的用户名和邮箱符合格式要求即可,尽情玩耍吧,少年。
这里我没有连接安卓设备所有显示为0,没有设备连接。
四、Docker部署的adb连接设备
如何使用docker拉取的adb 连接设备呢?
首先,要知道怎么像系统adb命令一样使用adb命令。
其次,接入安卓设备进STF平台中,实现安卓设备的统一管理。
来吧,展示:
adb连接设备的两种方式:
1、USB直连模式
2、adb WiFi模式
以上两种模式均可参考我之前的文章:https://www.cnblogs.com/hanxiaobei/p/12941996.html
五、另一种接入设备的方式(该方式为adb连接设备两种方式中的USB直连)
因为我搭建STF是在CentOS虚拟机中,我本地windows宿主机有adb且连接了手机,我想启动STF时直接挂上宿主机的设备。Just Do It!
前提:
1、宿主机和虚拟机在同一网段且和联通(ping命令了解一下)
2、宿主机启动adb
问题:
使用命令:adb -a -P 5037 fork-server server启动时报:reply fd for adb server to client communication not specified. 这时可以用上图中的命令重新启动一下。
连接上之后用adb观察一下设备列表展示:
3、重新启动一下Docker中的STF
重新启动的命令:docker run -d --name stf --privileged=true --net host openstf/stf stf local --public-ip 192.168.209.130 --adb-host 192.168.209.1 --adb-port 5037 --allow-remote
192.168.209.130 为我虚拟机CentOS7的IP
192.168.209.1 为我宿主机Windows10的IP
其他命令参考上图中露出
4、宿主机访问虚拟机docker中的STF服务:http://192.168.209.130:7100/#!/devices
到此完成:STF搭建在一个单独的PC上,安卓设备全部接入在另一台PC上,实现启动STF平台挂载上另一台PC上的所有设备。
如果还想探索更多姿势,接入设备还可以使用adb的wifi模式,这样解决了许多设备同时连接PC时数据线的杂乱,不过需要注意的是在启动STF之前需要先把adb wifi连接的设备全部连接好。
你以为这样就完了吗?还没有,接下来就是你愉快玩耍的时间咯。
1、STF安卓设备管理平台接入公司的LDAP,验证是否公司内部员工
2、STF与appium结合实现移动端安卓的自动化
3、扩展构建成自己公司的安卓设备管理平台,全部接入后实现统一管理和使用