Docker自动构建开发测试平台

介绍

在工作中需要对程序反复测试验证正确性,并发布。为了保证代码开发测试运行环境一致,主要采用docker实现自动化构建、自动化测试。

开发环境

这里采用python开发环境为例,在默认的Linux发行版中,docker镜像默认与ISO镜像类似,除了系统本身的一些工具,并没有安装多余的软件,需要自己在基础操作系统镜像上构建开发环境的镜像,后面统称开发环境。

采用Dockerfile自动构建,例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
FROM centos:6

VOLUME ["/opt/data"]
RUN curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
RUN yum clean all && yum makecache
RUN yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel 
RUN yum -y install libffi-devel 
RUN yum -y install git tar wget curl nss
RUN curl -o Python-2.7.15.tgz  -s -w %{http_code}  https://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz -L
RUN tar xvzf Python-2.7.15.tgz && cd Python-2.7.15&&./configure --enable-shared --enable-optimizations && make && make altinstall
RUN echo "/usr/local/lib" >> /etc/ld.so.conf
RUN ldconfig
RUN rm -rfv /usr/bin/python && ln -s /usr/local/bin/python2.7 /usr/bin/python
WORKDIR /opt/build

构建开发环境

1
cd mydev && docker build -t mydev .

执行以上命令最后会生成名为mydev的镜像。

Usage

有了基础开发环境镜像后,就可以进行,开发、测试等测试。

启动开发环境

1
docker run --name mydev -it -v /home/myapp:/opt/build/myapp mydev /bin/bash

执行以上命令后会自动进入容器里面的bash环境。如果退出容器后需要使用docker start mydev启动容易,然后可以执行docker exec -it mydev /bin/bash重新进入容器。

自动构建程序

通常采用shell脚本进行自动化构建,自动化部署等,同样在这里,只需要实现build.bash这样的shell自动化脚本即可。

比如把myapp打包成二进制文件,build.bash例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/bash

MYPY_ENV="requirements.txt"
function  check_env(){
    for  i  in  `cat $MYPY_ENV`
    do
        local HAVE_ENV=`pip show $i`
        if [ -z $HAVE_ENV ];
        then
            pip install $i
        fi
    done
}

check_env

rm -rf build dist *.spec
pyinstaller -F -w myapp.py > log/info.log

采用docker执行自动构建。

如果第一次启动自动构建容器直接运行:

1
docker run --name mybuild -it -v /home/myapp:/opt/build/myapp mydev /bin/bash -c /opt/build/myapp/build.bash

以后运行直接可运行mybuild容器即可自动构建。

1
docker start mybuild

自动化构建运行环境

将构建出来的二进制程序和相关的文件按照以下目录存放:

1
2
3
4
myapp/
	bin/
	conf/
	lib/

构建docker运行环境镜像。

1
2
3
4
5
6
7
8
9
10
FROM centos:6

VOLUME ["/opt/data"]
RUN curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.163.com/.help/CentOS6-Base-163.repo
RUN yum clean all && yum makecache
RUN yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel 
ADD myapp/ /usr/local/
WORKDIR /usr/local/myapp
EXPOSE 80
CMD ["/usr/local/myapp/bin/myapp","-c" ,"/usr/local/myapp/conf/myapp.conf"]

猜你喜欢

转载自blog.csdn.net/u012206617/article/details/84562023