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

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

本文使用外掛: io.fabric3 的 docker-maven-plugin 外掛

maven專案自動部署到docker,主要有根POM檔案和Assembly兩塊配置,如圖:


一、POM檔案配置

        <finalName>${project.artifactId}</finalName>  <!--這裡一定要定義生成的JAR包檔名--
        <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配置

注意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