概述
對于Docker一直以來都有聽說澄步,但是作為移動端開發(fā)工程師冰蘑,從來沒去了解過,不知道對于移動端會有什么作用村缸,直到有一天在網(wǎng)上瀏覽文章的時候看到了一篇用Docker來部署Android從而提高構(gòu)建速度的文章懂缕,才想著深入研究一下具體的配置方法。
對于Jenkins就是一個通過安裝插件王凑,配置項目,從而能夠定時構(gòu)建項目聋丝,并且同時還可以自動上傳安裝包到fir或者是蒲公英的這么一個工具索烹,之前一直有用,但是將這兩者結(jié)合起來會有更加意想不到的效果弱睦。
docker的簡單說明
對于一個初級學習docker的人來說百姓,我覺得docker就像一個你每次換一臺新的電腦,都要重新配置開發(fā)環(huán)境以及一些亂七八糟的東西况木,尤其是對于程序員來說垒拢,一搞可能就得搞一天,所以這個docker就相當于你只要配置一次火惊,然后下次你要重新配置的時候求类,就把上次配置的鏡像文件拿過來一執(zhí)行就可以了,當然我的解釋也不是那么的準確屹耐,大家將就看尸疆。
下面的所有操作都是在我購買的DigitalOcean的vps上進行的。
可以直接選擇Docker的惶岭,就不用自己安裝了寿弱。但是操作步驟我還是要介紹的:
安裝docker
我是通過直接購買的配置過docker的vps,所以對于安裝的過程按灶,我并沒有嘗試症革,但是mac上我倒是安裝了,mac上的安裝方法是下載相關(guān)的docker文件鸯旁,然后直接安裝就行噪矛。如果需要在ubuntu上安裝的話量蕊,這是安裝步驟
運行容器
Docker中的容器就相當于一個一個的可以用來運行應(yīng)用的空間,此時我們需要先獲取一個鏡像摩疑,鏡像就是容器的只讀版本危融。
docker pull ubuntu:14.04
現(xiàn)在我們已經(jīng)有了一個鏡像了,然后通過下面的命令用來查看系統(tǒng)中的鏡像:
docker images
現(xiàn)在我們把鏡像運行起來雷袋,運行起來的鏡像就叫做容器了吉殃,從而我們就可以在容器中做很多的事情:
docker run -it ubuntu:14.04
運行之后,可以看到命令行的變化:
此時我們已經(jīng)進入到容器中了楷怒,所以接著做的一切操作都是相對于該容器而言的蛋勺。
接著在容器中安裝openjdk-8
apt-get install -y openjdk-8-jdk
就會看到已經(jīng)安裝成功了
如果我們希望我們安裝有jdk的容器能夠保存下來供以后使用方便的話,我們就可以將我們的容器變成鏡像從而保存在docker hub上面鸠删。
具體操作步驟:
//退出當前的容器
exit
//查看運行的容器
docker ps -a
//將容器轉(zhuǎn)化為鏡像
docker commit -m "add jdk to ubuntu" -a "zhanfangzxc" 055a15fe9c2e zhanfangzxc/ubuntu-jdk
-m用來說明提交的信息抱完,-a指定一個用戶信息。055a15fe9c2e指定的容器的id刃泡,通過docker ps -a查看巧娱。
接著執(zhí)行docker images,就可以看到多一條images信息烘贴。
為了方便以后使用禁添,我們可以把該鏡像文件存儲到Docker Hub上面,首先需要去注冊一個賬號桨踪,然后接著在上面創(chuàng)建一個repository老翘,就相當于github的操作差不多,接著在終端進行如下操作:
//第一步
docker login
//第二步 輸入用戶名和密碼
//第三步
docker push zhanfangzxc/ubuntu-jdk:v1 .
此時如果操作沒有問題的話锻离,你就會發(fā)現(xiàn)你的docker hub中已經(jīng)正常提交上去了铺峭。
通過Dockerfile創(chuàng)建鏡像
還有一種方式是通過Dockerfile創(chuàng)建鏡像,下面我先展示一下我的一個Dockerfile:
FROM ubuntu:17.10
MAINTAINER zhanfangzxc "zhanfangzxc@gmail.com"
RUN apt-get update -qq && \
apt-get install -y --no-install-recommends openjdk-8-jdk unzip curl && \
apt-get clean
ENV USR_LOCAL /usr/local
ENV ANDROID_SDK_URL http://dl.google.com/android/android-sdk_r24.4.1-linux.tgz
RUN curl -L "${ANDROID_SDK_URL}" | tar --no-same-owner -xz -C ${USR_LOCAL}
ENV ANDROID_HOME ${USR_LOCAL}/android-sdk-linux
ENV ANDROID_SDK ${USR_LOCAL}/android-sdk-linux
ENV PATH ${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools
RUN echo "export PATH=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools" >> /etc/profile
ENV ANDROID_SDK_COMPONENTS tools,platform-tools,build-tools-19.1.0,build-tools-22.0.1,build-tools-21.1.2,build-tools-22.0.0,build-tools-26.0.2,android-21,android-25,android-22,android-26,endroid-27,extra-android-m2repository,extra-google-m2repository,android-23,build-tools-23.0.0,build-tools-23.0.1,build-tools-23.0.2,build-tools-26.0.2,build-tools-27.0.0
RUN echo y | android update sdk --no-ui --all --filter "${ANDROID_SDK_COMPONENTS}"
ENV TERM dumb
- 第一行FROM用來說明是基于什么構(gòu)建的汽纠。
- 第二行用來標記該文件的作者
- 第三行的RUN用來在shell中執(zhí)行命令
具體的Dockerfile的編寫規(guī)則網(wǎng)上有很多卫键,大家還是多去參看一下。
通過Dockerfile構(gòu)建鏡像
有了上面的Dockerfile虱朵,我們就可以通過他來構(gòu)建鏡像了
docker build -t zhanfangzxc/androidbuilder:v1.0 .
此時再次運行docker images就會看到剛才生成的鏡像永罚。
接著運行鏡像:
docker run zhanfangxc/androidbuilder:v1.0
Docker+Jenkins部署安卓項目
不知道大家有沒有仔細看我上面的那個Dockerfile里面:
被紅框圈住的地方就是配置jdk和Android sdk的地方,這是作為一個安卓開發(fā)所必不可少的配置卧秘。
在這個Dockerfile中我們配置了Gradle和jenkins呢袱,所以此時只要參照上面講的方式:
- 將Dockerfile構(gòu)建成image
- 運行image
此時就可以通過瀏覽器訪問你在服務(wù)器上部署的jenkins了,然后在jenkins中安裝git翅敌,gradle羞福,pgyer等插件,接著創(chuàng)建一個項目蚯涮,對項目進行配置就可以定時的對你的項目進行構(gòu)建了治专,也不需要在每次都花很長時間去構(gòu)建和打包了卖陵。
本人也是第一次操作,所以也走了一些彎路张峰,也折騰了兩天才弄好泪蔫,所以第一次操作的小伙伴不用著急慢慢來,當你構(gòu)建成功的那一刻喘批,才會懂得有多么爽撩荣。
補充一句,如果docker容器啟動的特別多的話以及鏡像特別多的話會特別耗費資源饶深,所以記得及時清理掉沒用的餐曹。
參考文章
https://blog.saymagic.cn/2016/01/25/docker-image-for-android.html
https://blog.saymagic.cn/2015/06/01/learning-docker.html
http://www.qingpingshan.com/rjbc/az/122582.html
http://www.cnblogs.com/xiaoqi/p/jenkins-androd-apphosting.html
https://www.fengzifz.com/2017/03/27/clean-docker/