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

来源:互联网 发布:网络电视看不到地方台 编辑:程序博客网 时间:2024/06/05 15:17

本文例子地址:https://github.com/wangfei0904306/yeepay

本文使用插件: 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>john.doe@example.com</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 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


原创粉丝点击