1. Docker方案选取背景[编辑]
    2. 之前主服务器安装的是ubuntu系统,没有做容灾方案(运维方面擅长centos系统的服务器维护,而对ubuntu系统不如对centos系统那样熟悉),一旦机器出现故障,比如有一次停电导致硬盘损坏,平台停止运行很长时间,影响颇大。
    3. 而直接在centos系统上部署stf,之前没有做过,因此有一些顾虑,担心不如在ubuntu上成熟稳定。最后决定采用一个折中的方案:选用安装有centos系统的机器作为宿主机,以ubuntu官方镜像为基础构建stf镜像,再用该镜像启动容器部署在宿主机上。
    4. Docker镜像制作[编辑]
    5. 创建镜像通常会选用一个基础镜像,创建docker镜像主要有两种方式:1commit方式;2dockerfile方式。
    6. Commit方式[编辑]
    7. 1,从远程仓库中搜寻合适的基础镜像,docker search ubuntu
    8. 2,从远程仓库中拉取想要的基础镜像,docker pull ubuntu
    9. 3,拉取镜像后,查看本地仓库中的镜像,docker images
    10. 4,用拉取到的镜像启动一个新容器,docker run -it ubuntu,这个容器就相当于一个ubuntu操作系统环境
    11. 5,之后就像普通ubuntu环境那样,搭建stf运行环境
    12. # apt-get update
    13. # apt-get install -y git
    14. # apt-get install -y lib32stdc++6
    15. # apt-get install -y yum
    16. # apt-get install -y build-essential
    17. # apt-get install -y android-tools-adb
    18. # apt-get install -y openjdk-8-jdk
    19. #apt-get install -y aapt
    20. #apt-get install -y unzip
    21. #apt-get install -y zip
    22. 安装相应的软件
    23. 软件列表:
    24. Nodejs
    25. Bower
    26. GraphicsMagick
    27. Libsodium
    28. Zeromq
    29. Protobuf
    30. Rethinkdb(这个没有安装包)
    31. Nodejs安装
    32. 方法一: 解压tar.gz
    33. #tar fvxz node-v5.10.0.tar.gz
    34. #cd node-v5.10.0
    35. #./configure
    36. #make
    37. #make install
    38. #ln -s /usr/local/bin/node /usr/bin/node
    39. #ln -s /usr/local/bin/npm /usr/bin/npm
    40. 下载链接:文件:Node-v5.10.0.tar.zip
    41. 方法二:
    42. # apt-get install npm
    43. # apt install nodejs-legacy
    44. 检查是否正常安装
    45. #node -v
    46. Ubuntunode版本比较低,建议用第一种方法
    47. bower 安装
    48. #npm install bower -g
    49. 检查是否正常安装
    50. # bower -version
    51. GraphicsMagick安装
    52. # tar fvxz GraphicsMagick-1.3.24.tar.bz2
    53. # cd GraphicsMagick-1.3.24
    54. #./configure
    55. #make
    56. #make install
    57. 检查是否正常安装
    58. #whereis gm
    59. root@stf-test:~# whereis gm
    60. gm: /usr/local/bin/gm
    61. 下载链接 文件:GraphicsMagick-1.3.24.tar.zip
    62. libsodium安装
    63. tar fvxz libsodium-1.0.8.tar.gz
    64. cd libsodium-1.0.8
    65. ./configure
    66. make
    67. make install
    68. 检查是否安装成功 使用命令whereis libsodium
    69. 下载链接文件:Libsodium-1.0.9.tar.zip
    70. zeromq安装
    71. # tar fvxz zeromq-4.1.4.tar.gz
    72. # cd zeromq-4.1.4
    73. #./configure
    74. # make
    75. # make install
    76. 文件:Zeromq-4.2.0.tar.zip
    77. protobuf安装
    78. # tar fvxz protobuf-cpp-3.0.0-alpha-3.tar.gz
    79. #cd protobuf-cpp-3.0.0-alpha-3
    80. #./configure --prefix=/usr/local/protobuf
    81. # make
    82. # make install
    83. # vi /etc/profile
    84. /etc/profile配置在上面配置已经加上了,直接使用命令source /etc/profile就能生效#protoc --version
    85. 文件:Protobuf-cpp-3.1.0.zip
    86. 建议用apt-get的方法安装
    87. apt-get install protobuf-compiler
    88. pkg-config安装
    89. #apt-get install pkg-config
    90. rethinkdb安装
    91. # source /etc/lsb-release && echo "deb http://download.rethinkdb.com/apt xenial main" | sudo tee /etc/apt/sources.list.d/rethinkdb.list |wget -qO- http://download.rethinkdb.com/apt/pubkey.gpg | sudo apt-key add -
    92. (以上是一条命令,一定要把选择xenial 或者wily版本的rethink,不然后面启动STF时会报错)
    93. #apt-get update
    94. #apt-get install rethinkdb
    95. stf安装 使用git 命令下载master版本
    96. #git clone https://github.com/openstf/stf.git
    97. 当然也可以下载stftgz包下来解压 进入stf目录,安装node_module的组件
    98. #npm install
    99. #npm link
    100. 安装完成 检查是否能启动stf
    101. #rethinkdb &
    102. #stf local --public-ip= ip地址
    103. Dockerfile方式[编辑]
    104. dockerfile创建镜像的步骤大致为:先创建dockerfile文件,再编辑该文件,加上符合dockerfile语法的命令,最后用docker build命令生成镜像。
    105. dockerfile语法
    106. FROM:指定镜像基于哪个基础镜像创建。FROM ubuntu
    107. MAINTAINER:用来指定维护者的姓名和联系方式。MAINTAINER <author name email>
    108. RUN:相当于运行shell命令。RUN apt-get update
    109. COPY:复制文件指令,将本地文件copy到镜像中。COPY node-v5.10.0 /home/ly/node-v5.10.0
    110. 编辑好dockerfile文件后,创建镜像docker build -t cloud:stf .
    111. dockerfile文件在/home/ly/路径下
    112. Docker环境的部署和镜像维护[编辑]
    113. 因为网络这一块我们不太熟悉,所以镜像制作好后是请运维部门的同事代为部署的。
    114. docker环境ip192.168.196.203,宿主机ip192.168.196.201,宿主机目录/data/g_data1/挂载到容器目录/var/stf/,从宿主机进入到docker环境的命令docker exec -it stf /bin/bash
    115. 在使用过程中,会安装新的模块或其它工具,docker环境也会随之变化,因此docker容器和其刚开始部署时已有很大不同。如果有删除容器、重新部署容器的需求,需将当前运行的容器commit成新的镜像,作为下次部署容器时的依据。
    116. 最开始制作镜像时采用的是dockerfile方式,容器运行后,采用的是用容器commit成镜像的方式来维护更新镜像。
    117. 空间清理,日志删除[编辑]
    118. 因为存储有限,需要定理清理磁盘空间。
    119. /var/stf/file文件夹下保存着大量测试生成的日志文件和用户上传的apk,占用空间较大,需要定期清理
    120. /var/stf下的cleanlog.sh是用来清理日志和apk的脚本,清除30天以前的日志./cleanlog.sh 31 清除19天以前的日志./cleanlog.sh 20