Docker自动构建开发测试平台
介紹
在工作中需要對程序反復測試驗證正確性,并發(fā)布。為了保證代碼開發(fā)測試運行環(huán)境一致,主要采用docker實現(xiàn)自動化構(gòu)建、自動化測試。
開發(fā)環(huán)境
這里采用python開發(fā)環(huán)境為例,在默認的Linux發(fā)行版中,docker鏡像默認與ISO鏡像類似,除了系統(tǒng)本身的一些工具,并沒有安裝多余的軟件,需要自己在基礎操作系統(tǒng)鏡像上構(gòu)建開發(fā)環(huán)境的鏡像,后面統(tǒng)稱開發(fā)環(huán)境。
采用Dockerfile自動構(gòu)建,例如:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | FROM centos:6VOLUME ["/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 |
構(gòu)建開發(fā)環(huán)境
| 1 | cd mydev && docker build -t mydev . |
執(zhí)行以上命令最后會生成名為mydev的鏡像。
Usage
有了基礎開發(fā)環(huán)境鏡像后,就可以進行,開發(fā)、測試等測試。
啟動開發(fā)環(huán)境
| 1 | docker run --name mydev -it -v /home/myapp:/opt/build/myapp mydev /bin/bash |
執(zhí)行以上命令后會自動進入容器里面的bash環(huán)境。如果退出容器后需要使用docker start mydev啟動容易,然后可以執(zhí)行docker exec -it mydev /bin/bash重新進入容器。
自動構(gòu)建程序
通常采用shell腳本進行自動化構(gòu)建,自動化部署等,同樣在這里,只需要實現(xiàn)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/bashMYPY_ENV="requirements.txt" function check_env(){for i in `cat $MYPY_ENV`dolocal HAVE_ENV=`pip show $i`if [ -z $HAVE_ENV ];thenpip install $ifidone }check_envrm -rf build dist *.spec pyinstaller -F -w myapp.py > log/info.log |
采用docker執(zhí)行自動構(gòu)建。
如果第一次啟動自動構(gòu)建容器直接運行:
| 1 | docker run --name mybuild -it -v /home/myapp:/opt/build/myapp mydev /bin/bash -c /opt/build/myapp/build.bash |
以后運行直接可運行mybuild容器即可自動構(gòu)建。
| 1 | docker start mybuild |
自動化構(gòu)建運行環(huán)境
將構(gòu)建出來的二進制程序和相關(guān)的文件按照以下目錄存放:
| 1 2 3 4 | myapp/bin/conf/lib/ |
構(gòu)建docker運行環(huán)境鏡像。
| 1 2 3 4 5 6 7 8 9 10 | FROM centos:6VOLUME ["/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"] |
總結(jié)
以上是生活随笔為你收集整理的Docker自动构建开发测试平台的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: git clone报错:fatal: u
- 下一篇: ORB(Oriented FAST an