maven專案docker外掛自動部署——jar包
阿新 • • 發佈:2018-12-26
本文使用外掛: io.fabric3 的 docker-maven-plugin 外掛
maven專案自動部署到docker,主要有根POM檔案和Assembly兩塊配置,如圖:
一、POM檔案配置
<build> <finalName>${project.artifactId}</finalName> <!--這裡一定要定義生成的JAR包檔名--> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> <!--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> <!--生成的image名--> <alias>${project.artifactId}</alias> <build> <from>java:8u40</from> <maintainer>
[email protected]</maintainer> <tags> <tag>latest</tag> <tag>${project.version}</tag> </tags> <ports> <port>8080</port> </ports> <volumes> <volume>/usr/src/myapp</volume> </volumes> <buildOptions> <shmsize>2147483648</shmsize> </buildOptions> <entryPoint> <!-- exec form for ENTRYPOINT --> <exec> <arg>java</arg> <arg>-jar</arg> <!--啟動引數--> <arg>/usr/src/myapp/${project.artifactId}.jar</arg> </exec> </entryPoint> <assembly> <mode>dir</mode> <basedir>/</basedir> <descriptor>assembly.xml</descriptor> </assembly> </build> <run> <namingStrategy>alias</namingStrategy> <!--container全名規則--> <ports> <port>0.0.0.0:5555: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> </build>
二、Assembly配置
注意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}.jar</source> <outputDirectory>/usr/src/myapp</outputDirectory> <destName>${project.artifactId}.jar</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