最近在學習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
代碼實現如圖所示:
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
3、運行對應iamge id(如我的是centos,對應的image id是5182)

1 docker run -it 5182 bash
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
5、centos這個系統是很干凈的,並沒有安裝wget,如果需要對其他應用進行安裝,需要先安裝wget,再對其他應用進行安裝

1 yum -y install 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"
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
8、由於后續安裝setuptools、pip有其他的壓縮包,比如unzip
安裝zip壓縮包:

1 yum install -y unzip zip
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
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 //安裝調用虛擬桌面接口
配置虛擬桌面接口完成后, 在自動化代碼中,需要引用如下代碼才能生效:
代碼引用:
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
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
謝謝大家~如有錯誤,請見諒,目前處於學習階段~