終於完工了,終於徹底的成功了,終於有一點點成效了,乘着還有點時間,記錄一下,免得忘記。
一:環境
1、安裝有docker的linux服務器(ip地址:17x.17.85.x)(如何安裝?:Docker入門級操作:docker安裝及下載鏡像)、安裝jenkins的服務器(ip地址:17x.16.81.x),githab,項目文件如圖:
二、對項目的處理
1、在項目的啓動項目xxx_war目錄下的pom.xml文件中的
<build>
<plugins>
此處添加下面那段話
</plugins>
</build>
加入這一段:
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.4.14</version>
<configuration>
<!-- 項目生成的鏡像名稱 -->
<imageName>${project.name}:${project.version}</imageName>
<!-- dockerfile的存放位置 -->
<dockerDirectory>${project.basedir}</dockerDirectory>
<skipDockerBuild>false</skipDockerBuild>
<resources>
<resource>
<!-- 項目生成war包的的存放位置 -->
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
2、在你的pom.xml文件所指的dockerDirectory,(dockerfile的存放位置)放一個Dockerfile文件,我的位置在這裏:
dockerfile文件內容比較簡單,主要取決於你的基礎鏡像的好壞,我的就很需要優化,哈哈
# dockerfile 基礎配置
FROM 基礎鏡像
MAINTAINER 作者信息
# CI會在編譯Docker鏡像之前把編譯產物拷貝到target目錄下
COPY /target/*.war /opt/tomcat7/webapps/xxx.war
# configuration of java and tomcat ENV
ENV JAVA_HOME /opt/jdk
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /opt/tomcat7
ENV CATALINA_BASE /opt/tomcat7
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#設置啓動命令
ENTRYPOINT ["/opt/tomcat7/bin/catalina.sh","run"]
3、在每一個pom.xml文件中添加下面文件,(解決jenkins使用maven編譯時報亂碼的錯誤)
<properties>
<!-- 文件拷貝時的編碼 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!-- 編譯時的編碼 -->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
項目的處理大致就是這些。其中特別注意的是dockerfile文件的位置和war位置需要注意。
三、對jenkins的處理
開始我按照網上各種方法都嘗試了,但是我的知識實在有限,理解不了,想到這個方法是因爲我一直在Xmanager工具裏面操作docker所以纔想到在jenkin裏面使用ssh對安裝有docker的服務器進行操作。所以感覺比較簡單,我能夠理解的方法。
1、首先公司jenkins已經安裝在windows的服務器上了,並且安裝了ssh和maven。
2、在安裝jenkins的服務器上面添加環境變量(檢查安裝docker的環境看是否端口已開通:後面添加):
DOCKER_HOST tcp://xxx.xxx.xxx.xxx:2375
3、通過jenkins的可視化界面添加可遠程控制裝有docker 的服務器,單擊系統管理--》系統設置--》SSH remote hosts中添加ssh相關信息,步驟如圖:
3、創建新項目
1)在jenkins的可視化界面中點擊新建--》添加項目名稱--》構建一個自由風格的軟件項目--》左下角點擊OK步驟如圖:
2)點擊項目名稱進入項目--》配置
1.添加項目描述等基礎信息
2.源碼管理:公司有svn也有用git,以git爲示例。
3.構建
這裏的每一個指令都要是正確的,一個地方錯了,構建就不會成功。特別要注意空格、分號、名稱對應等等小細節。
通過ssh對docker環境的控制,此處的判斷是如果在docker環境中已經有此項目的容器正在運行,那麼先停止容器,然後刪除容器,再刪除鏡像,特別注意的是刪除容器是rm,刪除鏡像是rmi。(:1.0.0-SNAPSHOT)雙引號後面的是版本號。鏡像名稱應當和pom.xml將形成的鏡像名稱中的一致。
if docker ps -a|grep -i xxxget; then
docker stop xxxget;
docker rm xxxget;
docker rmi xxxget_war:1.0.0-SNAPSHOT;
fi
這個語句非常重要,將這個語句實現兩個功能,一個cd xxx_war是將創建環境轉換到啓動項目下面(默認在jenkins創建的項目運行目錄下,也就是testxxxfet下),第二mvn -am -amd 就是build項目的啓動子項目以及與之相關聯的子項目。大家需要修改的是啓動子項目的名稱。
cd xxxget_war && mvn -am -amd clean package docker:build
這個語句是啓動項目鏡像的容器,其中18080爲docker對外的接口,可以根據需要修改,--name後面是你請動的容器的名稱,後面是鏡像名稱,應當和pom.xml文件中生成的鏡像名稱一致,當jenkins運行到了這一步說明你的鏡像已經打包成功了,你在你的docker環境下可以看到你的鏡像(使用:
docker images
查看鏡像)
docker run -it -d -p 18080:8080 --name xxxget xxxget_war:1.0.0-SNAPSHOT /bin/bash
4.構建後的操作:
這裏是構建完成之後,jenkins給你郵箱發送構建信息。
到此你的jenkins配置基本完成了,你也可以在加上一些時間的限制,比如說,規定每天的某個時間自動構建一下項目等等。
4、啓動項目的構建
配置完成之後回到項目,點擊立即構建--》console output 你就可以在控制檯看到構建的日誌了,它會根據你的配置一步一步執行,當你其中一個步驟出錯,構建會馬上停止,所以儘量不要讓自己的配置裏面有錯誤指令。