如何打包一个 Robot Framework 的 Docker 镜像

为了方便 CI 集成 UI 自动化测试,需要将 Robot Framework 运行环境打包为 Docker 镜像。本篇主要内容是一些与打包过程相关的配置和脚本。

1. 打包目录结构

1
2
3
4
5
6
tree
.
├── docker-compose.yml
├── Dockerfile
├── google-chrome.repo
├── requirements_base.txt

1.1 Dockerfile

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
FROM centos:7

ADD ./google-chrome.repo /etc/yum.repos.d/google-chrome.repo

RUN yum -y install epel-release

RUN yum -y install wget unzip python-pip google-chrome-stable

RUN google-chrome -version

RUN wget https://chromedriver.storage.googleapis.com/2.41/chromedriver_linux64.zip

RUN unzip chromedriver_linux64.zip

RUN mv chromedriver /usr/bin/

RUN  mkdir /data

ADD ./requirements_base.txt /data/requirements_base.txt

RUN cd  /data

RUN chmod 777 /data

RUN  pip install -r /data/requirements_base.txt

RUN yum -y install cjkuni-ukai-fonts cjkuni-uming-fonts wqy-zenhei-fonts

WORKDIR /data

1.2 google-chrome.repo

1
2
3
4
5
6
[google-chrome]
name=google-chrome
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

1.3 requirements_base.txt

1
2
3
4
5
6
7
8
robotframework==3.0.4
robotframework-archivelibrary==0.4.0
robotframework-ftplibrary==1.6
robotframework-ride==1.5.2.1
robotframework-selenium2library==3.0.0
robotframework-seleniumlibrary==3.1.1
robotframework-sshlibrary==3.1.0
robotframework-excellibrary==0.0.2

1.4 docker-compose.yml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
version: '2'

services:

    robot-framework:
      build: ./
      image: robot-framework:1.2.0
      volumes:
        - ./framework:/data
      command:  /bin/bash -c  '/data/start.sh'

2. 生成镜像并导出