maven项目docker插件自动部署——war包

来源:互联网 发布:电脑浏览器哪个好 知乎 编辑:程序博客网 时间:2024/06/06 02:56

本文使用插件: 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 0docker rm -f unipay    1>/dev/null 2>&1 | exit 0docker rmi -f iciyun/unipay:0.0.1-SNAPSHOT    1>/dev/null 2>&1 | exit 0docker rmi -f iciyun/unipay:latest    1>/dev/null 2>&1 | exit 0

深入学习的朋友: https://dmp.fabric8.io/#docker:build



原创粉丝点击