本文例子地址: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 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
版权声明:本文为wangfei0904306原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。