maven專案docker外掛自動部署——war包
阿新 • • 發佈:2018-12-26
本文使用外掛: io.fabric3 的 docker-maven-plugin 外掛
maven專案自動部署到docker,主要有根POM檔案和Assembly兩塊配置,如圖:
一、POM檔案配置
<finalName>${project.artifactId}</finalName> <!--這裡一定要定義生成的JAR包檔名--
二、Assembly配置<plugins> <!--Docker 外掛--> <!-- 構建映象: mvn docker:build --> <!-- 啟動映象: mvn docker:start --> <!-- 停止映象: mvn docker:stop --> <!-- 刪除映象: mvn -Ddocker.removeAll docker:remove --> <!-- 檢視映象日誌: mvn docker:logs --> <!-- 映象啟動成功後,訪問地址為: http://192.168.1.70:8881/ams-server --> <plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.20.0</version> <extensions>true</extensions> <configuration> <dockerHost>http://192.168.0.54:2735</dockerHost> <images> <image> <name>iciyun/${project.artifactId}</name> <alias>${project.artifactId}</alias> <build> <from>tomcat:8.5-alpine</from> <tags><!-- define additional tags for the image --> <tag>latest</tag> <tag>${project.version}</tag> </tags> <assembly> <descriptor>assembly.xml</descriptor> <basedir>/</basedir> </assembly> <ports> <port>8080</port> </ports> </build> <run> <namingStrategy>alias</namingStrategy> <ports> <port>0.0.0.0:9085:8080</port> </ports> </run> </image> </images> </configuration> <executions> <!-- 以下為外掛與Maven宣告週期做繫結,可選擇使用 --> <!--<execution>--> <!--<id>build-docker-image</id>--> <!--<phase>package</phase>--> <!--<goals>--> <!--<goal>build</goal>--> <!--</goals>--> <!--</execution>--> <!--<execution>--> <!--<id>push-docker-image-to-registry</id>--> <!--<phase>deploy-goho</phase>--> <!--<goals>--> <!--<goal>push</goal>--> <!--</goals>--> <!--</execution>--> </executions> </plugin> </plugins>
注意Assembly.xml檔案位置為上圖中所示位置
Assembly.xml檔案內容:
三、構建命令<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> <id>${project.artifactId}</id> <files> <file> <source>target/${project.artifactId}.war</source> <outputDirectory>/usr/local/tomcat/webapps</outputDirectory> <destName>garage.war</destName> </file> </files> </assembly>
mvn -f /var/lib/jenkins/workspace/springboot-docker-demo/pom.xml docker:stop -Ddocker.removeAll docker:remove docker:build docker:start
其中“/var/lib/jenkins/workspace/springboot-docker-demo/pom.xml”為POM檔案的絕對位置
四、注意事項
Ubuntu中完美執行,CentOS中需要做額外處理,每次要先刪掉原有的容器和映象,類似處理命令如下:
docker stop unipay 1>/dev/null 2>&1 | exit 0 docker rm -f unipay 1>/dev/null 2>&1 | exit 0 docker rmi -f iciyun/unipay:0.0.1-SNAPSHOT 1>/dev/null 2>&1 | exit 0 docker rmi -f iciyun/unipay:latest 1>/dev/null 2>&1 | exit 0
深入學習的朋友: https://dmp.fabric8.io/#docker:build