1. 程式人生 > >maven專案docker外掛自動部署——jar包

maven專案docker外掛自動部署——jar包

本文使用外掛: 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