最近在学习Docker,准备做自动化测试代码集成的功能。如下文章的前提是已经安装好linux系统,且成功安装好Docker。

接下来我会按步骤一步一步的对自动化需要的一些环境进行安装,如果没有特别说明,涉及到的目录都是在对应步骤下的目录。

软件环境配置如下:

docker安装在root权限下

python 3.7.0

selenium 3.11

geckodriver 0.21.0    //将其放置于/usr/bin目录下(固定目录)

firefox 62.0        //将其主目录添加至环境变量中

  

具体步骤如下:(在软件环境配置保持一致的前提下,只需要按照代码块中的代码一步一步进行执行,能生成一个docker镜像)

PS:1-11、14步都是在Docker的容器中安装,13步是在虚拟机上进行安装

1、打开虚拟机,进入终端,在官网上去拉一个centos系统

1 docker pull centos

拉一个纯净版的centos系统

代码实现如图所示:

PS:有时候使用docker会出现【Failed to restart dock.service: Unit not found.】,此时执行如下命令:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service

2、找到你拉下来的centos,找到对应的image id

1 docker image ls

centos找到对应的image id

3、运行对应iamge id(如我的是centos,对应的image id是5182)

1 docker run -it 5182 bash

运行image id,进入docker 容器

4、此时已经进入到容器中,开始对自动化需要的内容进行安装,安装python3.7以前会有很多依赖,先安装依赖

代码中的依赖进行一条一条的安装:

 1 安装前的准备(各种依赖及工具安装)
2 yum -y install gcc make
3 yum -y install libffi-devel
4 yum -y install zlib zlib-devel
5 yum -y install bzip2 bzip2-devel
6 yum -y install ncurses ncurses-devel
7 yum -y install readline readline-devel
8 yum -y install openssl openssl-devel
9 yum -y install openssl-static
10 yum -y install xz lzma xz-devel
11 yum -y install sqlite sqlite-devel
12 yum -y install gdbm gdbm-devel
13 yum -y install tk tk-devel

安装python前需要安装的各种依赖

5、centos这个系统是很干净的,并没有安装wget,如果需要对其他应用进行安装,需要先安装wget,再对其他应用进行安装

1 yum -y install wget

安装wget

6、python3.7.0安装后会出现ssl报错的问题,可以通过安装LibreSSL这种方式来解决(LibreSSL安装网址可以去官网中下载,下载你需要的版本,这里以2.8.0来举例)

wget https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-2.8.0.tar.gz

下载地址如下:https://ftp.openbsd.org/pub/OpenBSD/LibreSSL/

解压缩LibreSSL后,进入LibreSSL目录,进行配置文件修改,执行如下代码:

 1 ./config --prefix=/usr/local/ssl   //放到/usr/local/ssl 路径
2 make & make install
3 mv /usr/bin/openssl /usr/bin/openssl.bak
4 mv /usr/include/openssl /usr/include/openssl.bak
5 ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl //创建快捷方式
6 ln -s /usr/local/ssl/include/openssl /usr/include/openssl
7
8 进入如下目录:
9 cd /etc/ld.so.conf.d //扩展centos默认访问库,使可访问libressl库文件
10
11 新建文件 :
12 vi libressl-2.8.0.conf
13
14 将以下行加入文件,并保存 :
15 /usr/local/ssl/lib
16
17 运行命令使生效:
18 ldconfig
19
20 编辑/etc/profile文件,新增如下环境变量:
21
22   vi /etc/profile
23
24 在profile文件中加入如下内容,并保存退出:
25   export LDFLAGS="-L/usr/local/ssl/lib"
26   export CPPFLAGS="-I/usr/local/ssl/include" //引号内第一个字母是大写i
27   export PKG_CONFIG_PATH="/usr/local/ssl/lib/pkgconfig"

进入LibreSSL安装目录,配置文件

7、一切的依赖都安装、配置完成后,开始安装python3.7.0

在python的官网下,去下载对应的版本,目前是python3.7.0

 1 下载python3.7.0:
2 wget https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tgz
3
4 解压缩 : tar zxvf Python-3.7.0.tgz
5
6 //解压缩后,进入python3.7.0对应的目录,分别执行对应的命令:
7 cd python3.7.0
8
9 //配置安装目录,使其安装在/usr/local目录下,这样后面才能成功安装setuptools和pip
10 ./configure --prefix=/usr/local --enable-shared CFLAGS=-fPIC
11
12 //安装
13 make & make install
14
15 //创建快捷方式,是输入python时默认打开python3.7解释器,而不是系统默认的版本
16 ln -s /usr/local/bin/python3.7 /usr/local/bin/python

下载python3.7.0并安装

8、由于后续安装setuptools、pip有其他的压缩包,比如unzip

安装zip压缩包:

1 yum install -y unzip zip

安装unzip

9、setuptools、pip下载、解压缩(工具包都是在官网中去下载的,如果网址不行,建议去官网中对应的版本进行下载)

 1 下载setuptools:
2 wget https://files.pythonhosted.org/packages/6e/9c/6a003320b00ef237f94aa74e4ad66c57a7618f6c79d67527136e2544b728/setuptools-40.4.3.zip
3
4 解压缩:
5 unzip setuptools-40.4.3.zip
6
7 解压缩后,进入setuptools目录,安装setuptools:
8 cd setuptools-40.4.3
9 python setup.py build
10 python setup.py install
11
12 下载pip:
13 wget https://files.pythonhosted.org/packages/69/81/52b68d0a4de760a2f1979b0931ba7889202f302072cc7a0d614211bc7579/pip-18.0.tar.gz
14 解压缩:
15 tar -zxvf pip-18.0.tar.gz
16
17 解压缩后,进入pip目录,安装pip:
18 cd pip-18.0
19 python setup.py build
20 python setup.py install

安装setuptools、pip

10、自动化需要运行起来,首先需要在centos下安装虚拟桌面,目的是python去调用虚拟桌面接口

1 虚拟桌面安装:
2 yum install Xvfb
3
4 yum install gtk3
5
6 yum install libgtk-3.so.0

安装虚拟桌面

11、centos虚拟桌面安装完成后,自动化代码需要在无桌面环境运行起来,此时python需要先去调用虚拟桌面接口

1 配置Python环境:
2 pip install xvfbwrapper //安装调用虚拟桌面接口

python环境,配置虚拟桌面接口

配置虚拟桌面接口完成后, 在自动化代码中,需要引用如下代码才能生效:

代码引用:
from xvfbwrapper import Xvfb
vdisplay = Xvfb(width=1280, height=740)
vdisplay.start()
try: # launch stuff inside virtual display here.
finally:
  vdisplay.stop()

12、安装selenium,根据我的环境配置,安装对应版本的selenium

pip install selenium==3.11

安装selenium 3.11

13、这一步,一定要注意,安装Firefox,前面11步都是在Docker容器中进行的,firefox在虚拟机上进行安装

 1 A下载firefoxdirver(这是WEBDRIVER):
2 wget https://github.com/mozilla/geckodriver/releases/download/v0.21.0/geckodriver-v0.21.0-linux64.tar.gz
3
4 B解压缩:
5 tar -zxvf geckodriver-v0.21.0-linux64.tar.gz
6
7 C//将下载的driver放到python的交互式启动目录/usr/bin/下
8
9
10 D下载浏览器(这是浏览器,与WEBDRIVER是2个东西)
11 wget http://ftp.mozilla.org/pub/firefox/releases/62.0/linux-x86_64/

下载浏览器驱动、浏览器

14、此时基本在容器中完成了自动化环境的配置,此时只需要Docker commit一个镜像

1 //查找容器ID
2 docker container ls [-a] //-a显示所有状态的容器,包括停止,-a是可选的,如果不加,只显示当前运行中的容器
3 //上面一步找到对应的容器ID,用commit命令可以生成一个镜像
4 docker commit 容器ID

查找容器ID生成镜像

谢谢大家~如有错误,请见谅,目前处于学习阶段~

在Centos7下docker配置自动化环境镜像(python3.7+selenium 3.11+firefox 62+geckodriver 0.21)的更多相关文章

  1. windows7下docker配置镜像加速

    原文地址:https://blog.csdn.net/slibra_L/article/details/77505003 1,本文目的:windows7下docker配置镜像加速,下面是具体操作步骤: ...

  2. centos7下docker的安装教程

    Centos7下docker安装教程以及踩过的那些坑 推荐在Centos下安装docker,在windows下安装docker可能会遇到很多的问题,而且docker官方推荐使用linux环境来使用do ...

  3. Mac下docker搭建lnmp环境 + redis + elasticsearch

    之前在windows下一直使用vagrant做开发, 团队里面也是各种开发环境,几个人也没有统一环境,各种上线都是人肉,偶尔还会有因为开发.测试.生产环境由于软件版本或者配置不一致产生的问题, 今年准 ...

  4. centos7下Maven Java selenium3环境搭建

    centos7下Maven Java selenium3环境搭建 一.Jdk安装 我这里用的是open-jdk. [adawang@localhost src]$ sudo yum search op ...

  5. CentOS7下Hadoop伪分布式环境搭建

    CentOS7下Hadoop伪分布式环境搭建 前期准备 1.配置hostname(可选,了解) 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(p ...

  6. Centos7下安装配置Redsocks

    Redsocks是一个开源的网络程序,代码依赖开源的libevent网络库.Redsocks允许你将所有TCP连接重定向到SOCKS或HTTPS代理,比如Shadowsocks(Centos7下安装配 ...

  7. PHP学习笔记----IIS7下安装配置php环境

    原文:PHP学习笔记----IIS7下安装配置php环境 Php如何安装 Php版本的选择 Php在windows下的(php5.4.7)有两种版本: VC9 x86 Non Thread Safe ...

  8. CentOS7下Docker的安装与使用

    前言 简介 Docker 是一个开源的应用容器引擎,基于 Go 语言,并遵从 Apache2.0 协议开源. Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到 ...

  9. CentOS7 下Docker最新入门教程 超级详细 (安装以及简单的使用)

    转载https://blog.csdn.net/wzsy_ll/article/details/82866627 1.为什么使用Docker(本人) 最近总是频繁的在新服务器发布项目, 每次发布都需要 ...

随机推荐

  1. XCTF-crypto---转轮机加密

    转轮密码机是由一个输入键盘和一组转轮组成的,每个转轮上标有26个字母,字母的顺序随意,转轮之间由齿轮进行连接,当一个转轮转动时,可以讲一个字母转化为另一个字母. 工作原理: 转轮机由多个转轮构成,每个 ...

  2. fork-vfork -exit&_exit

    昨天帮人查bug,发现了一个vfork fork exit  _exit不分导致的问题. 使用vfork 后调用exit导致的问题. 主要需要弄清楚他们之间的区别: 1.  fork  ():子进程拷 ...

  3. linux 调试&各种知识收集2(持续更新)

    1.查看netlink socket 丢包 cat /proc/net/netlink sk Eth Pid Groups Rmem Wmem Dump Locks Drops Inode c91ed ...

  4. 解决IE下readonly的Input光标选中的问题

    首先用unselectable="on"解决,但是这种方法bug太多, 屏蔽了input的onblur事件(也就是focus事件在Angualr下),所以只能用click事件来代替 ...

  5. Boost命令行解释器的简单使用:Boost.Program_options

    简介 如果使用比较多的命令行程序的话,对于命令行参数的输入肯定不会陌生,大部分的程序都是通过类似下面的形式进行输入的,比如熟悉的ls ls --all -l --color=auto 这里面包含了三种 ...

  6. [原题复现+审计][RoarCTF 2019]Easy Calc(http协议走私、php字符串解析漏洞)

    简介  原题复现:  考察知识点:http协议走私.php字符串解析漏洞  线上平台:https://buuoj.cn(北京联合大学公开的CTF平台) 榆林学院内可使用信安协会内部的CTF训练平台找到 ...

  7. Docker学习第三天(Docker数据卷管理)

    1.Docker数据卷管理 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供了三种 ...

  8. Poem Codes - 攻防世界(Decrypt-the-Message)

    Poem Codes Poem Code 最显著的特点就是一首诗歌. 详情请戳这里 让我们一起来过滤一遍这个神奇的加密过程~ ① 给出一首诗歌 for my purpose holds to sail ...

  9. 算法基础——Trie字符串统计

    原题链接 题目: 维护一个字符串集合,支持两种操作: "I x"向集合中插入一个字符串x: "Q x"询问一个字符串在集合中出现了多少次. 共有N个操作,输入的 ...

  10. 如何在苹果电脑下载器Folx中管理下载列表

    Folx是一款Mas OS专用的下载器,提供了便捷的下载管理.灵活的设置.今天小编准备跟大家聊一聊关于Folx中常见的几种下载管理方式. 一.管理任务状态栏 在Folx下载面板上,可以通过类别查看任务 ...