赞
踩
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<layout>ZIP</layout>
<includes>
<!-- jar中不包含其他依赖包-->
<include>
<groupId>nothing</groupId>
<artifactId>nothing</artifactId>
</include>
</includes>
</configuration>
</plugin>
<!--拷贝依赖到jar外面的lib目录--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependency</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <!--输出目录--> <outputDirectory>${project.build.directory}/lib</outputDirectory> <excludeTransitive>false</excludeTransitive> <stripVersion>false</stripVersion> </configuration> </execution> </executions> </plugin>
<!-- 拷贝资源文件 到指定的resource目录--> <plugin> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <!-- 资源文件输出目录 --> <outputDirectory>${project.build.directory}/resources</outputDirectory> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> <!--包含的文件--> <includes> <include>*/**</include> </includes> </resource> </resources> </configuration> </execution> </executions> </plugin>
<!--指定配置文件--> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <configuration> <archive> <!-- 生成的jar中,不要包含pom.xml和pom.properties这两个文件 --> <addMavenDescriptor>false</addMavenDescriptor> <manifest> <!-- 是否要把第三方jar加入到类构建路径 --> <addClasspath>true</addClasspath> <!-- 外部依赖jar包的最终位置 --> <classpathPrefix>lib/</classpathPrefix> <!-- 配置项目启动类 --> <mainClass>com.example.model.one.ModeloneApplication</mainClass> </manifest> <!-- 指定配置文件的新目录--> <manifestEntries> <Class-Path>resources/</Class-Path> </manifestEntries> </archive> <excludes> <!--以target/classes为根目录--> <!--资源文件排除--> <exclude>/*.*</exclude> <!--html页面排除--> <exclude>/templates/</exclude> <!--静态文件排除--> <exclude>/static/</exclude> </excludes> </configuration> </plugin>
至此Springboot jar包瘦身配置完成
1、target目录
生成了lib和resource文件

2、jar包中
生成的jar包中排除了lib和资源文件

3、执行jar查看
在jar包所在目录执行
> java -jar .\model-one.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.3.4.RELEASE)
===
===
可正常运行
FROM openjdk:8-jdk-alpine #指定时区 RUN ln -snf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo Asia/Shanghai > /etc/timezone ARG JAR_FILE ARG OUT_DIRECTORY #复制依赖jar COPY ${OUT_DIRECTORY}/lib /home/project/lib/ #复制配置文件 COPY ${OUT_DIRECTORY}/resources /home/project/resources/ #复制项目jar COPY ${JAR_FILE} /home/project/model-one.jar #声明使用的端口,需要-p去绑定宿主机否则将随机绑定 EXPOSE 8081 ENTRYPOINT ["sh", "-c", "java -Djava.security.egd=file:/dev/./urandom -jar /home/project/model-one.jar"]
<!--docker 插件--> <plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.35.0</version> <configuration> <!-- Docker 远程管理地址--> <dockerHost>tcp://127.0.0.1:2375</dockerHost> <!--私服地址不使用可以不配置--> <!--<registry>私服地址</registry>--> <images> <image> <!--命名空间/仓库名称:镜像版本号--> <name>${project.artifactId}:${project.version}</name> <build> <args> <!--为Dockerfile中提供参数--> <JAR_FILE>target/${project.build.finalName}.jar</JAR_FILE> <OUT_DIRECTORY>target</OUT_DIRECTORY> </args> <!--dockerFile位置--> <dockerFileDir>${project.basedir}</dockerFileDir> </build> </image> </images> </configuration> </plugin>
1、执行docker build打包

2、target目录生成docker tar包

3、docker远程服务中出现该镜像

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。