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

简介: ## 前言 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 有任何意见建议,欢迎勾搭。答疑请入群咨询:

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。 &nbsp; 相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/mysql&nbsp;
目录
相关文章
|
6月前
|
Linux iOS开发 Docker
MyEMS开源系统安装之Linux/macOS上的DOcker
本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。
213 1
|
8月前
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
398 28
|
安全 Linux 网络安全
Web安全-Linux网络协议
Web安全-Linux网络协议
259 4
|
10月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
318 19
|
9月前
|
运维 网络安全 文件存储
找不到类似 Docker Desktop 的 Web 管理界面?试试这些开源方案
Docker Desktop 是本地容器化开发的利器,但存在无法通过 Web 远程管理、跨平台体验不一致等问题。为此,推荐几款轻量级、可 Web 化管理的 Docker 工具:Portainer 功能全面,适合企业级运维;CasaOS 集成应用商店和 NAS 功能,适合家庭/个人开发环境;Websoft9 提供预集成环境,新手友好。这些工具能有效提升容器管理效率,满足不同场景需求。
558 3
|
10月前
|
监控 Linux PHP
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
【02】客户端服务端C语言-go语言-web端PHP语言整合内容发布-优雅草网络设备监控系统-2月12日优雅草简化Centos stream8安装zabbix7教程-本搭建教程非docker搭建教程-优雅草solution
362 20
|
9月前
|
Linux 网络安全 虚拟化
linux怎么把文件传到docker里面
在现代应用开发中,Docker作为流行的虚拟化工具,广泛应用于微服务架构。文件传输到Docker容器是常见需求。常用方法包括:1) `docker cp`命令直接复制文件;2) 使用`-v`选项挂载宿主机目录,实现数据持久化和实时同步;3) 通过SCP/FTP协议传输文件;4) 在Dockerfile中构建镜像时添加文件。选择合适的方法并确保网络安全是关键。
996 1
|
9月前
|
Linux 虚拟化 Docker
Linux服务器部署docker windows
在当今软件开发中,Docker成为流行的虚拟化技术,支持在Linux服务器上运行Windows容器。流程包括:1) 安装Docker;2) 配置支持Windows容器;3) 获取Windows镜像;4) 运行Windows容器;5) 验证容器状态。通过这些步骤,你可以在Linux环境中顺利部署和管理Windows应用,提高开发和运维效率。
1366 1
|
11月前
|
Linux Docker 容器
Linux 中停止 Docker 服务报 warning 导致无法彻底停止问题如何解决?
在 Linux 系统中,停止 Docker 服务时遇到警告无法彻底停止的问题,可以通过系统管理工具停止服务、强制终止相关进程、检查系统资源和依赖关系、以及重置 Docker 环境来解决。通过以上步骤,能够有效地排查和解决 Docker 服务停止不彻底的问题,确保系统的稳定运行。
801 19

热门文章

最新文章