在Centos7下docker配置自動化環境鏡像(python3.7+selenium 3.11+firefox 62+geckodriver 0.21)


  最近在學習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生成鏡像

 

謝謝大家~如有錯誤,請見諒,目前處於學習階段~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM