通过docker-maven-plugin这个插件就可以了
1. 配置
<!-- 版本信息 -->
<properties>
<docker.baseImage>java:8</docker.baseImage>
<docker.volumes>/home</docker.volumes>
<docker.image.prefix>192.168.1.220:2375</docker.image.prefix>
<docker.java.security.egd>-Djava.security.egd=file:/dev/./urandom</docker.java.security.egd>
<docker.java.opts>-Xms256m -Xmx256m</docker.java.opts>
<docker-maven-plugin.version>1.2.2</docker-maven-plugin.version>
</properties>
<plugins>
<!-- 这个是springboot的maven插件 -->
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>2.7.3</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<!-- 这个是maven提供的maven插件 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<!-- 这个是为了解决打包的时候mapstruct用不到lombok生成的get/set方法的问题 -->
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.3.0.Final</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<!-- 这个是docker打包的maven插件,相关配置都放pom里了,所以不需要dockerFile -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>${docker-maven-plugin.version}</version>
<configuration>
<!--打包docker镜像的docker服务器-->
<dockerHost>http://${docker.image.prefix}</dockerHost>
<!--指定dockerfile文件路径-->
<!-- <dockerDirectory>${project.basedir}/src/main/resources/docker</dockerDirectory>-->
<!--镜像名称及版本[ip:port/name:tag]-->
<imageName>${project.artifactId}</imageName>
<!--基础镜像-->
<baseImage>openjdk:11</baseImage>
<!--配置挂载目录-->
<volumes>${docker.volumes}</volumes>
<!--配置执行命令
<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>
<env>
<JAVA_OPTS>${docker.java.opts}</JAVA_OPTS>
</env>-->
<entryPoint>
["sh","-c","java $JAVA_OPTS ${docker.java.security.egd} -jar /${project.build.finalName}.jar"]
</entryPoint>
<!-- optionally overwrite tags every time image is built with docker:build -->
<forceTags>true</forceTags>
<!--配置镜像tag,这里指定了两个tag(最新的版本号和latest)-->
<imageTags>
<imageTag>${project.version}</imageTag>
</imageTags>
<!-- copy the service's jar file from target into the root directory of the image -->
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
<serverId>docker</serverId>
</configuration>
</plugin>
</plugins>
2. 打包