1. 程式人生 > >maven外掛打包可執行jar包到docker

maven外掛打包可執行jar包到docker

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"]