F2etest-web 的 Docker 化之路(Linux 篇)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: ## 前言 F2etest 是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案,优势是: - 10 倍以上硬件利用率,降低企业运营成本; - 提供非常棒的桌面用户体验,极大的提高测试效率; - 浏览器云提供真实浏览器环境,还原真实测试场景; - WebDriver 云快速稳定的支撑自动化测试脚本运行。 ## 现状 > 仓库地址: 1. 用户需自行搭建 F2

前言

F2etest 是一个面向前端、测试、产品等岗位的多浏览器兼容性测试整体解决方案,优势是:

  • 10 倍以上硬件利用率,降低企业运营成本;
  • 提供非常棒的桌面用户体验,极大的提高测试效率;
  • 浏览器云提供真实浏览器环境,还原真实测试场景;
  • WebDriver 云快速稳定的支撑自动化测试脚本运行。

现状

仓库地址:https://github.com/alibaba/f2etest

  1. 用户需自行搭建 F2etest,没有线上的云测平台供用户直接使用;
  2. 平台搭建成本非常大,耗时耗力,需要同时了解 Windows 运维和 Linux 运维;
  3. 安装手册无法满足用户实际的需求。

系统架构

architecture.png

详细系统架构及实现原理请参考《F2etest 系统架构及实现原理》

方案

旨在降低用户搭建成本,期望用户可以在 1 个小时内完成 F2etest 最小版本的搭建。

目前采用的方案是:

  1. Linux 上各个服务通过 Docker 打在一个镜像里,用户通过拉取镜像直接部署。
  2. Windows 的基础配置做成一个镜像,阿里云用户可以通过镜像市场获取(进行中)。
  3. 用户根据自己机器的实际网络情况,修改对应的 IP 地址则可以直接体验最小版本的 F2etest。

Linux Docker 化

完整版 Dockerfile 源文件:https://github.com/alibaba/f2etest/blob/master/Dockerfile

Guacamole Server

C 应用,我们习惯叫它 guacd,用于与 Windows Server 进行通信,RDP 协议。

FROM centos

### Guacamole Server ###
# 更多详细安装信息可参考 Guacamole 官方 <https://guacamole.apache.org/doc/gug/installing-guacamole.html>
# 拷贝定制过的 guacamole-server 并解压
ADD f2etest-guacamole/guacamole-server-0.9.3.tar.gz /home/guacdshare

WORKDIR /home/guacdshare

# 安装需要使用到的依赖包
RUN yum install -y wget gcc initscripts sudo lsof automake autoconf libtool make \
  # 安装 `guacd` 依赖
  cairo-devel libpng-devel uuid-devel freerdp* libvncserver-devel openssl-devel \
  # 编译前创建 `freerdp` 的软连接
  && ln -s /usr/local/lib/freerdp/guacsnd.so /usr/lib64/freerdp/ \
  && ln -s /usr/local/lib/freerdp/guacdr.so /usr/lib64/freerdp/

WORKDIR /home/guacdshare/guacamole-server-0.9.3

# 运行配置脚本并将 `guacd` 添加到 `/etc/init.d` 目录
RUN ./configure --with-init-dir=/etc/init.d \
  # 编译
  && make \
  # 安装构建的组件
  && make install \
  # 更新已安装库的缓存
  && ldconfig \
  # 设置运行时自动启动
  && chkconfig --add guacd \
  && chkconfig guacd on 

Guacamole Client

Tomcat 应用,我们习惯叫它 guacamole,主要与 guacamole server 进行通信,HTTP 协议。

WORKDIR /root

## JAVA ##
# 下载 JDK 1.8
RUN wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u141-b15/336fa29ff2bb4ef291e347e091f7f4a7/jdk-8u141-linux-x64.tar.gz" \
  && mkdir /usr/java

WORKDIR /usr/java

# 拷贝并解压 JDK
RUN cp /root/jdk-8u141-linux-x64.tar.gz ./ \
  && tar xzf jdk-8u141-linux-x64.tar.gz

# 设置 JAVA 运行环境
ENV JAVA_HOME /usr/java/jdk1.8.0_141
ENV PATH $JAVA_HOME/bin;$PATH
ENV CLASSPATH .:$JAVA_HOME/lib

## TOMCAT ##
WORKDIR /usr/local

# 下载并解压 Tomcat
RUN wget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.38/bin/apache-tomcat-8.5.38.tar.gz \
  && tar -xzvf apache-tomcat-8.5.38.tar.gz \
  && mv apache-tomcat-8.5.38 tomcat8

# 拷贝定制过的 WAR 包
COPY f2etest-guacamole/guacamole-0.9.3.war /usr/local/tomcat8/webapps/guacamole.war

# 拷贝 guacamole 配置文件和免登配置文件
COPY f2etest-docker/guacamole.properties /etc/guacamole/
COPY f2etest-docker/noauth-config.xml /etc/guacamole/

# 拷贝 Tomcat 服务脚本到 `/etc/init.d` 目录
COPY f2etest-docker/tomcat8 /etc/init.d/

WORKDIR /etc/init.d

# 增加 Tomcat 服务让其运行时自动启动
RUN chmod 755 tomcat8 \
  && chkconfig --add tomcat8 \
  && chkconfig --level 234 tomcat8 on \
  && mkdir /root/.guacamole \
  && ln -s /etc/guacamole/guacamole.properties /root/.guacamole

F2etest-web

Node 应用,用户操作的入口站点,可访问指定版本的浏览器。

## Node Env ##
WORKDIR /usr/local

# 下载 node v10 并解压
RUN wget https://nodejs.org/dist/v10.15.1/node-v10.15.1-linux-x64.tar.xz \
  && xz -d node-v10.15.1-linux-x64.tar.xz \
  && tar -xf node-v10.15.1-linux-x64.tar \
  && mv node-v10.15.1-linux-x64 node \
  # 给 `node`, `npm` 命令创建软连接
  && ln -s /usr/local/node/bin/node /usr/bin/node \
  && ln -s /usr/local/node/bin/npm /usr/bin/npm \
  # 安装 pm2 [node 应用进程管理器]
  && npm i -g pm2 \
  # 给 `pm2` 命令创建软连接
  && ln -s /usr/local/node/bin/pm2 /usr/bin/pm2

## MySQL ##
# 下载安装 MySQL
RUN wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm \
  && yum localinstall -y mysql-community-release-el7-5.noarch.rpm \
  && yum install -y mysql-community-server

## Nginx ##
# 拷贝 nginx 源配置
COPY f2etest-docker/nginx.repo /etc/yum.repos.d/

# yum 安装 nginx
RUN yum-config-manager --enable nginx-mainline \
  && yum install -y nginx

COPY f2etest-docker/nginx.conf /etc/nginx/

# 拷贝 Web 应用程序
COPY f2etest-web /home/f2etest-web
WORKDIR /home/f2etest-web/
# 安装 node 依赖包
RUN npm i


# 拷贝初始化脚本(初始化数据库表、`pm2` 启动 Web、启动 Nginx)
COPY f2etest-docker/setup.sh ./

EXPOSE 80

# 指定容器启动程序(以防出现权限不足情况)
ENTRYPOINT ["/usr/sbin/init"]

部署指南

# 获取 `f2etest-web` 镜像
docker pull registry.cn-hangzhou.aliyuncs.com/f2etest/f2etest-web

# 启动容器
# 映射本地端口,这里已 80 为例,请确保此端口未被占用
# 如果 80 被占用,请修改为其它可用端口,例如 8080 端口:-p 8080:80
docker run -dit --privileged -p 80:80 --name f2etest registry.cn-hangzhou.aliyuncs.com/f2etest/f2etest-web

详细部署指南请参考《F2etest-web 部署》

联系

如果你对 F2etest 有任何意见建议,欢迎勾搭。答疑请入群咨询:

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
安全 Linux 网络安全
Web安全-Linux网络协议
Web安全-Linux网络协议
78 4
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
65 2
|
2月前
|
Linux Docker 容器
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
本篇博客重在讲解Centos安装docker,经博主多次在不同服务器上测试,极其的稳定,尤其是阿里的服务器,一路复制命令畅通无阻。
1385 4
Centos安装docker(linux安装docker)——超详细小白可操作手把手教程,包好用!!!
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
37 3
|
2月前
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
331 3
|
3月前
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
|
3月前
|
Linux Docker 容器
linux之docker命令
linux之docker命令
|
2月前
|
Linux 开发工具 Docker
各个类linux服务器安装docker教程
各个类linux服务器安装docker教程
68 0
|
3月前
|
机器学习/深度学习 安全 网络协议
Web安全-Linux网络命令
Web安全-Linux网络命令
32 1
|
3月前
|
SQL 安全 数据库
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
467 1