pom.xml文件添加docker插件
<build> <plugins> <!-- docker的maven插件,官网:https://github.com/spotify/docker-maven-plugin --> <plugin> <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.12</version> <configuration> <imageName>useronline-jar</imageName> <!-- 指定Dockerfile所在的路径 --> <dockerDirectory>${project.basedir}/src/main/docker</dockerDirectory> <!-- 注意imageName一定要是符合正则[a-z0-9-_.]的,否则构建不会成功 --> <!-- 详见:https://github.com/spotify/docker-maven-plugin Invalid repository name ... only [a-z0-9-_.] are allowed--> <!--<imageName>useronline-dockerfile</imageName>--> <!--<baseImage>java</baseImage>--> <!--<entryPoint>["java", "-jar", "/${project.build.finalName}.jar"]</entryPoint>--> <resources> <resource> <targetPath>/</targetPath> <directory>${project.build.directory}</directory> <include>${project.build.finalName}.jar</include> </resource> </resources> </configuration> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.4.3</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>jinju.useranalyse.kafka.KafkaTest</mainClass> <!--<manifestEntries>--> <!--<Main-Class>jinju.useranalyse.kafka.KafkaTest</Main-Class>--> <!--<Build-Number>1.0.2</Build-Number>--> <!--</manifestEntries>--> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.handlers</resource> </transformer> <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer"> <resource>META-INF/spring.schemas</resource> </transformer> </transformers> <shadedArtifactAttached>true</shadedArtifactAttached> <shadedClassifierName>executable</shadedClassifierName> </configuration> </execution> </executions> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes> <filtering>false</filtering> </resource> </resources> </build>
docker-maven-plugin是docker打包插件
maven-shade-plugin是可执行jar打包插件
项目目录结构如下:
如果直接用docker插件打包会出现找不到主类
将package打包后的文件复制到docker目录后然后在Dockerfile中指定对应的文件即可。
FROM java ADD useronline-1.0-SNAPSHOT.jar app.jar ADD resources/ resources/ ENTRYPOINT ["java", "-jar", "/app.jar"]