环境部署:
#启动容器时指定网络模式
docker run -itd --name={container name} --net={ 网络模式}
#部署被测环境前端和后台,Conan和 holmes 启动前端时使用默认bridge网络模式分配端口;bridge模式使用最广泛,其网络隔离型最好;其通讯范围在容器虚拟网络范围内
在后台启动时使用container链接前端conan的方式启动; 后台的服务网络挂到前一个容器的网络中,这两个容器通过内网host可以通讯;搭建的测试环境只暴漏出前端端口
在测试被测前端应用时(应用内部有访问对应后台的用例) 后台的服务依然为前端提供服务.
docker run --name=conan -itd -p 8999:4200 conan
docker run --name=holmes -itd --net=container:conan holmes
#--network host 选择host网络模式使用的是宿主机的网络, 适用于容器与外网直接进行链接, 不需要端口映射, 比如容器(jenkins)需要拉取git上的代码, 但是容器网络没有sshk权限,需要在启动容器时自己配置,比较麻烦,因此直接使用宿主机网络链接,但是这种模式也有缺点, 其在公网内广播通讯易混淆(容器越多 其广播端口越容易冲突)
使用-v 数据卷挂载容器数据时, 需要修改目录权限,因为当映射本地数据卷时, 本地的目录的拥有者是root权限,而容器中的拥有者是jenkins, 其uid 为1000
sudo chown -R 1000 /home/wangjianqing/jenkins_data
docker run --name myjenkins -itd --network host -v /home/wangjianqing/jenkins_data:/var/jenkins_home --env JAVA_OPTS='Xmx8192m' jenkins/jenkins
#配置testlink环境, 需要新配置mariadb; 启动完mariadb,再启动testlink时,需要获取mariadb的通讯, 可以使用-e配置文件形式将db的配置写入到link容器中,也可以使用conntainer指向db容器;
以下使用--link 把db的网络信息以环境变量的形式注入到link容器(可以通过exec进入link容器中查看env环境变量)
docker run -d --name mariadb -e ALLOW_EMPTY_PASSWORD=yes -e MARIADB_USER=bn_testlink -e MARIADB_DATABASE=bitnami_testlink -v /home/gaofei/test/mysql:/var/lib/mysql -p 8088:3306 bitnami/mariadb:latest
docker run -d --name testlink -p 8099:80 -p 444:443 -e ALLOW_EMPTY_PASSWORD=yes -e TESTLINK_DATABASE_USER=bn_testlink -e TESTLINK_DATABASE_NAME=bitnami_testlink --link mariadb bitnami/testlink:latest
#搭建分布式UI web自动化测试Grid,需要下载VNC Viewer; 可以使用它打开node运行容器时的 图形界面
测试脚本作用于hub上,hub链接多个node(容器); 每个node下管理多个浏览器
如果chrome 和 hub不在同一台服务器中, 这两个容器不能使用--link的方式; 需要把hub的信息以环境变量的形式-e注入到node(chrome)容器中
docker run --name=hub -p 5001:4444 -e GRID_TIMEOUT=0 -e GRID_THROW_ON_CAPABILITY_NOT_PRESENT=true -e GRID_NEW_SESSION_WAIT_TIMEOUT=-1 -e GRID_BROWSER_TIMEOUT=15000 -e GRID_TIMEOUT=30000 -e GRID_CLEAN_UP_CYCLE=30000 -d selenium/hub:3.7.1-beryllium
docker run --name=chrome -p 5902:5900 -e NODE_MAX_INSTANCES=6 -e NODE_MAX_SESSION=6 -e NODE_REGISTER_CYCLE=5000 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm --link hub -d selenium/node-chrome-debug:3.7.1-beryllium
VNC密码是:secret
#制作镜像
使用commit
使用docker file 编程的方式制作镜像
FROM centos