springboot项目打jar制作成镜像并指定配置文件位置

本文详细介绍了如何使用Dockerfile将SpringBoot应用打包成镜像,重点讲解了如何指定配置文件位置,并通过数据卷挂载配置文件。步骤包括上传jar包、编写Dockerfile、创建数据卷、运行镜像和容器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

springboot项目打jar制作成镜像并指定配置文件位置

一、上传jar到服务器

在这里插入图片描述

二、编写Dockerfile

#基于java8
FROM java:8
 
#创建一个目录存放jar包(在容器里面创建目录)
RUN mkdir -p /huanglei/jar/demo/config /huanglei/jar/demo/logs
 
#复制jar包以及相关配置文件(复制jar包到容器的根目录)
COPY demo-0.0.1-SNAPSHOT.jar /demo-0.0.1-SNAPSHOT.jar
 
#添加进入docker容器后的目录
WORKDIR /huanglei/jar/demo
 
#配置项目端口
CMD ["--server.port=7001"]
 
#对外暴露的端口号
EXPOSE 7001
 
#修改文件的创建修改时间
RUN bash -c 'touch /demo-0.0.1-SNAPSHOT.jar'
 
#运行脚本,启动springboot项目,这里我们指定加载配置文件的位置,并且通过数据卷挂载同步到容器中
ENTRYPOINT ["java","-jar","/demo-0.0.1-SNAPSHOT.jar","-Dspring.config.location=/huanglei/jar/demo/config/application.properties --logging.config=/huanglei/jar/demo/logs/logback.xml > /huanglei/jar/demo/logs/demo.log 2>&1 &"]

三、新建对应配置文件所存放的数据卷目录

在这里插入图片描述

四、将配置文件上传到数据卷目录下

在这里插入图片描述

五、运行命令生成我们的项目镜像

在这里插入图片描述

六、运行容器

docker run -dit --name demo -p 7001:7001 \
-v /huanglei/jar/demo/config:/huanglei/jar/demo/config \
-v /huanglei/jar/demo/logs:/huanglei/jar/demo/logs \
--privileged=true \
demo:v1.0

七、查看镜像和容器

镜像

在这里插入图片描述

容器

在这里插入图片描述

日志

在这里插入图片描述

<think>好的,用户现在问的是如何配置Spring Boot项目打包JAR。之前的对话中他们遇到了Maven构建错误,现在可能已经解决了那个问题,现在想要进一步了解如何正确配置打包。 首先,我需要回想Spring Boot的标准配置方式。通常,Spring Boot使用Maven或Gradle作为构建工具,这里用户提到了Maven,所以应该以Maven为例。需要确认他们是否了解Spring Boot的默认打包插件,也就是spring-boot-maven-plugin,这个插件负责将项目打包可执行的JAR。 然后,用户可能已经有一个基本的pom.xml,但可能需要检查是否正确配置了插件。我需要分步骤说明如何添加和配置这个插件,确保他们不会遗漏关键部分。比如,在pom.xml的build部分添加插件,指定版本,或者继承父项目,可能父pom已经包含了这些配置,但如果用户项目没有正确继承,可能需要显式配置。 另外,用户可能遇到的常见问题包括打包后的JAR无法运行,或者依赖没有正确包含。这时候需要解释repackage目标的作用,以及如何通过Maven命令进行打包。可能还需要提到如何排除不需要的依赖,或者定制JAR的名称。 此外,用户可能想知道打包后的JAR结构和普通JAR的区别,比如BOOT-INF目录和MANIFEST.MF的位置。需要简要说明这些内容,帮助他们理解为什么Spring BootJAR可以独立运行。 还有,用户可能会混淆普通的JAR打包和可执行JAR的区别,需要强调spring-boot-maven-plugin的重要性,没有它的话,打包出来的JAR可能缺少必要的启动类和依赖。 最后,可能需要给出验证步骤,比如如何运行生JAR文件,以及如何检查JAR的内容是否正确。这可以帮助用户确认配置是否功,避免再次出现之前的构建错误。</think>以下是Spring Boot项目打包为可执行JAR的完整配置指南(使用Maven构建工具): $$ \text{标准配置流程} = \begin{cases} 1. \text{基础POM配置} \\ 2. \text{打包插件配置} \\ 3. \text{构建验证} \end{cases} $$ **一、基础POM配置** ```xml <!-- 必须继承Spring Boot父POM --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.5</version> <!-- 使用最新稳定版 --> <relativePath/> <!-- 从仓库查找 --> </parent> <groupId>com.example</groupId> <artifactId>demo-app</artifactId> <version>1.0.0</version> <packaging>jar</packaging> <!-- 明确指定打包类型 --> ``` **二、核心插件配置** ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <!-- 如果已继承父POM,版本可省略 --> <configuration> <mainClass>com.example.DemoApplication</mainClass> <!-- 指定启动类 --> <excludes> <exclude> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </exclude> </excludes> </configuration> <executions> <execution> <goals> <goal>repackage</goal> <!-- 关键:重新打包为可执行JAR --> </goals> </execution> </executions> </plugin> </plugins> </build> ``` **三、打包命令执行** ```bash # 标准打包命令 mvn clean package # 生的两个JAR文件: demo-app-1.0.0.jar # 可执行JAR(包含依赖) demo-app-1.0.0.jar.original # 原始JAR(不含依赖) ``` **四、高级配置选项** 1. **自定义JAR名称** ```xml <build> <finalName>${project.artifactId}-custom</finalName> </build> ``` 2. **排除特定依赖** ```xml <plugin> <configuration> <excludes> <exclude> <groupId>com.example</groupId> <artifactId>unwanted-module</artifactId> </exclude> </excludes> </configuration> </plugin> ``` 3. **分层打包(优化Docker镜像)** ```xml <plugin> <configuration> <layers> <enabled>true</enabled> </layers> </configuration> </plugin> ``` **五、验证打包结果** ```bash # 检查JAR结构 jar tf target/demo-app-1.0.0.jar # 预期包含的关键目录: BOOT-INF/ |- classes/ # 项目编译文件 |- lib/ # 依赖库 META-INF/ |- MANIFEST.MF # 启动配置 ``` **六、启动验证** ```bash java -jar target/demo-app-1.0.0.jar # 功标志: 2024-06-08T12:00:00.000Z INFO [demo-app] Starting DemoApplication v1.0.0 ``` **常见问题解决矩阵:** $$ \text{问题} \Rightarrow \text{解决方案} = \begin{cases} \text{No main manifest} \Rightarrow \text{检查spring-boot-maven-plugin配置} \\ \text{依赖缺失} \Rightarrow \text{确认maven-dependency-plugin是否正确执行} \\ \text{版本冲突} \Rightarrow \text{执行mvn dependency:tree分析} \end{cases} $$ **最佳实践建议:** 1. 始终使用`spring-boot-starter-parent`作为父POM 2. 避免修改默认的`<finalName>`配置 3. 生产环境推荐启用分层打包 4. 使用JDK 17+与Spring Boot 3.x兼容组合 通过以上配置,可以生标准的Spring Boot可执行JAR包,其文件结构符合$ \text{Fat JAR} = \text{应用代码} + \text{依赖库} + \text{嵌入式容器} $的规范要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值