windows ,docker部署STF,可以支持外网访问STF

        记录自己之前部署时,遗留下来的问题,并且给自己点动力,部署过程都是在网上找到,也有排查问题时发现的,多多学习,多多总结,多多输出

      为什么搭建STF,搭建stf,由于手机,太多了,并且,大家借来借去,导至,有时候根本找不到想要找的手机,而且,做适配测试的时候,一大堆手机,挨个看,很麻烦,毕竟懒惰是人类文明进步的真正动力

        搭建docker ,win10的版本,我选择docker+Oracle VM VirtualBox , 选择Oracle VM VirtualBox没有选择VMware 原因有2点:

        1、 首先VMware,需求Hyper-V开启,这个开启后,模拟器需求的vt就不再生效,导至模拟器卡顿,本人测试,常年用模拟器,没办法只能用VirtualBox 

        2、VMware USB设备连接 不太会,Oracle VM VirtualBox usb设备连接我觉得挺简单(Oracle VM VirtualBox使用usb设备也有很强的弊端)


        docker windows部署

官网下载docker ,下载docker toolbox ,下载virtual BOX(virtual BOX  和VirtualBox  Oracle VM VirtualBox Extension Pack)


安装步骤:

    先安装docker ,一直下一步 

    再安装docker  toolbox ,一直下一步 

    再安装 virtual BOX ,一直下一步 

在安装VirtualBox Extension Pack ,一直下一步

    再修改Docker Quickstart Terminal,右键快捷方式,目标处的配置:找到git的bash.exe 文件地址和Docker Toolbox 的start.sh

例如:"E:\Program Files\Git\bin\bash.exe" --login -i "C:\Program Files\Docker\Docker Toolbox\start.sh"

最后,如果双击Docker Quickstart Terminal 启动VirtualBox失败,修改C:\Program Files\Docker\Docker Toolbox\start.sh,里面 VBOX_MSI_INSTALL_PATH或者VBOX_INSTALL_PATH配置成环境变量(默认安装VirtualBox已经有了环境变量)

VirtualBox无界面启动

cmd 输入

docker info 

docker-machine  ip 可以获取虚拟机ip(一般为192.168.99.100)

安装完成后一共有4个图标


添加VirtualBox的usb控制设备

双击VirtualBox后,点击default,后点击设置,选择下面的USB设备,选中usb1.1 控制器,点击usb+,选择添加已经连到usb的安卓设备,点击OK,需要重启default虚拟机


理论上,现在已经吧环境安装好了

    现在可以用docker了

    安装STF(从网上找到 安装启动步骤)

        docker pull openstf/stf:latest

        docker pull sorccu/adb:latest

        docker pull rethinkdb:latest

        如果下载超时,可能是虚拟机,无法联网,需要修改VirtualBox配置(修改设置里面的网络,网卡1和网卡2的修改,修改完成后,需要重启)


        下载成功后

        启动 rethinkdb

docker run -d --name rethinkdb --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090

        启动成功后,访问http://192.168.99.100:8090/

        启动 adbd

docker run -d --name adbd --privileged  --net host sorccu/adb:latest

        如果需要远程其他电脑的adb,则需要将远程电脑的adb,设置为中转服务

        adb -a -P 5037 fork-server server ,将5037端口对外

        然后docker exec  adb  connect  ***.***.***.*** 5037

        又或者使用stf连接 :

docker exec stf  bash -c 'stf provider --name asd --min-port 7400 --max-port 7700 --connect-sub tcp://127.0.0.1:7114 --connect-push tcp://127.0.0.1:7116 --group-timeout 20000 --public-ip 100.104.65.135 --storage-url http://100.104.65.135:7100/ --adb-host xxxxxxx  --adb-port 5037 --vnc-initial-size 540x960 --allow-remote'


        启动成功后,docker exec adbd  adb devices,(如果上面VirtualBox添加过了usb的设备,这里应该可以获取到设备信息)

        启动 stf

 docker run -d --name stf --net host openstf/stf stf local --public-ip 192.168.99.100

    启动成功后,访问192.168.99.100:7100,就可以访问,(如果上面VirtualBox添加过了usb的设备,正常连接到设备,但是也需要将设备开启,开发者模式,并允许usb安装)

由于docker只能内网访问,所以如果需要外网访问,需要配合nginx

docker run -d —name stf—net host openstf/stf stf local —public-ip 外网ip

     启动成功后,需要配置nginx,才能访问

同时,如果需要修改stf里面,进行二次开发,则需要将里面的stf1 /app里面的数据copy出来,然后在挂载回去

这样,就可以对stf进行二次开发,方便,快捷


    安装nginx(从网上找到 安装启动步骤)

        docker pull nginx:latest

        docker run -d -p 80:80 --name nginx -v /e/nginx/conf:/etc/nginx/nginx.conf   nginx

        挂载到e盘的nginx配置

nginx 配置如下:(由于本人比较笨,不会使用nginx的批量的端口转发,所以只能一个一个端口转发,或者用其他的代理转发服务也可以,本人就只会nginx,0.0)

固定端口 :7100http,7110websocket,7400websocket,7401以后,所以的端口都可能是  为连接手机的端口websocket

websocket转发需要额外添加配置proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection "upgrade";

nginx上传的限制也需要开放  client_max_body_size 1G;(有些apk太大导至无法上传)

server {

    listen      7110;

    server_name  localhost;

    location / {

        proxy_redirect off;

        proxy_pass http://192.168.99.100:7110;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "upgrade";

        proxy_set_header Host $http_host;

            }

    }

server {

    listen      7100;

   server_name  localhost;

    location / {

        proxy_redirect off;

        proxy_pass http://192.168.99.100:7100;

        client_max_body_size 1G;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "upgrade";

        proxy_set_header Host $http_host;

        }

    }

server {

    listen      7400;

    server_name  localhost;

    location / {

        proxy_redirect off;

        proxy_pass http://192.168.99.100:7400;

        client_max_body_size 1G;

        proxy_http_version 1.1;

        proxy_set_header Upgrade $http_upgrade;

        proxy_set_header Connection "upgrade";

        proxy_set_header Host $http_host;

        }

    }


全部配置完成后

访问 外网ip:7100,外网即可正常访问,如果发现连接的设备点连接,屏幕没有显示,但是截图,都是好的,可能是nginx转发端口加的不太对,F12看一下有没有报错,查看一下连接端口,补上nginx即可


VirtualBox的缺点就是,每次新加一台新手机都需要重启虚拟机,不然adb devices时看不到,所以需要尽量一次连接好了后,adb devices,能看到了,再启动stf

本文暂时只支持安卓手机,ios的我还在研究,二次开发的,也在研究,继续研究

你可能感兴趣的:(windows ,docker部署STF,可以支持外网访问STF)