SpringBoot打jar包放到Docker上

本文介绍了Spring Boot项目使用Docker的详细步骤。包括修改pom.xml,添加docker-maven-plugin;在工程中创建Dockerfile文件;在eclipse执行mvn命令编译,拷贝文件到服务器构建镜像;还说明了如何用一个镜像加载不同配置文件创建多个容器。

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

转自:https://blog.youkuaiyun.com/zy910525/article/details/77966729

 

 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.youkuaiyun.com/zy910525/article/details/77966729
1、 修改pom.xml

追加下面内容:

    <build>

       <plugins> 

           <!-- tag::plugin[]-->

            <plugin>

                <groupId>com.spotify</groupId>

                <artifactId>docker-maven-plugin</artifactId>

                <version>0.4.3</version>

                <configuration>

                    <imageName>${docker.image.prefix}/${project.artifactId}</imageName>

                    <dockerDirectory>src/main/docker</dockerDirectory>

                    <resources>

                        <resource>

                            <targetPath>/</targetPath>

                            <directory>${project.build.directory}</directory>

                            <include>${project.build.finalName}.jar</include>

                        </resource>

                    </resources>

                </configuration>

            </plugin>

    <!-- end::plugin[]-->

       </plugins>

    </build>

<properties>

       <docker.image.prefix>msg</docker.image.prefix>

       <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

    </properties>

 

2、 工程中创建src/main/docker文件夹,创建Dockerfile文件,添加下面内容,pushMessage-0.0.1-SNAPSHOT.jar改成自己的jar包名。

FROM java:latest

ADD pushMessage-0.0.1-SNAPSHOT.jarapp.jar

RUN bash -c 'touch /app.jar'

ENTRYPOINT["java","-jar","/app.jar"]

 

FROM java:latest---》》使用docker中已存在的java:latest镜像

 

3、 eclipse执行mvn package docker:build命令,工程target\docker目录下有编译后的文件

4、 拷贝编译后的两个文件的到服务器,cd到目录,执行【sudo docker build -t="***" .】命令。

-t 添加tag, . 代表当前目录(注意 “.”的存在)

5、 执行docker images命令查看生成的镜像。

6、 执行docker run --name {容器名} -p {宿主机端口}:{docker端口} –v {宿主机目录}:{docker日志目录} -d {镜像ID:latest}

创建并启动容器。

 

 

 

 

 

考虑到以后会做负载均衡,不可能每个jar包都做一个镜像,用以下方法可以实现一个image加载不同的application.properties创建多个容器:

以推送接口为例:

1、 Dockerfile保持不变

2、 创建镜像【sudo docker build -t="msg/push" .】

3、 为不同端口配置文件创建目录/opt/pushMessage/config/8098。

4、 目录内放置该端口的配置文件。

5、 创建日志目录/opt/pushMessage/logs/8098

6、 执行命令创建容器:

docker run --name pushmsg8098 -p 8098:8098 -v/opt/pushMessage/logs/8098:/logs -v/opt/pushMessage/config/8098/application.properties:/application.properties -dmsg/push:latest

 

其他端口同样处理,创建单独的配置文件并在启动容器时加载该配置文件。

 
--------------------- 
作者:代码的寂寞 
来源:优快云 
原文:https://blog.youkuaiyun.com/zy910525/article/details/77966729 
版权声明:本文为博主原创文章,转载请附上博文链接!

<think>我们正在处理一个关于在Spring Boot项目中集成外部JAR的问题。根据用户的问题,我们需要提供清晰的步骤,并参考引用内容。引用中提供了几种方法,主要涉及在pom.xml中通过<scope>system</scope>和<systemPath>来指定外部jar,并在打时通过配置spring-boot-maven-plugin的<includeSystemScope>true</includeSystemScope>来确保外部jar被打进去。步骤:1.将外部jar放入项目目录中(例如:src/main/resources/lib/)。2.在pom.xml中添加依赖,使用system作用域,并指定jar的路径。3.配置spring-boot-maven-plugin插件,设置<includeSystemScope>true</includeSystemScope>,以确保打含这些外部jar。注意:用户可能希望将外部jar一起打到最终的可执行jar中,所以配置打插件是关键。根据引用[1]、[2]、[4]、[5]的内容,我们可以整理出具体步骤。另外,引用[3]提到了一种通过-Djava.ext.dirs指定外部jar路径的方式,但这种方式是在运行时候指定,而不是集成到项目jar中。用户的问题明确要求“集成”,所以我们采用前一种方法。因此,我们将按照以下步骤回答:-创建目录并放置jar-修改pom.xml添加依赖-配置打插件-测试和打同时,我们需要生成相关问题。注意:用户要求使用中文回答,且数学公式使用$...$或$$...$$格式(但本问题可能不涉及数学公式,所以可能不需要)。</think>### 如何在 Spring Boot 项目中集成外部 JAR 在 Spring Boot 项目中集成外部 JAR ,需通过 Maven 配置实现。以下是详细步骤: #### **步骤 1:放置 JAR ** 1. 在项目中创建目录存放外部 JAR ,例如: `src/main/resources/lib/` 2. 将外部 JAR 文件(如 `example.jar`)复制到此目录。 #### **步骤 2:修改 `pom.xml` 配置** ```xml <dependencies> <!-- 添加外部 JAR 依赖 --> <dependency> <groupId>com.example</groupId> <!-- 自定义组 ID --> <artifactId>example-lib</artifactId> <!-- 自定义库 ID --> <version>1.0.0</version> <!-- 自定义版本号 --> <scope>system</scope> <!-- 关键:声明为系统依赖 --> <systemPath>${project.basedir}/src/main/resources/lib/example.jar</systemPath> <!-- JAR 路径 --> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <configuration> <includeSystemScope>true</includeSystemScope> <!-- 关键:含系统依赖 --> </configuration> </plugin> </plugins> </build> ``` **关键配置说明**: - `scope=system`:声明依赖来自本地系统路径而非 Maven 仓库[^1][^5]。 - `<includeSystemScope>true</includeSystemScope>`:确保打含外部 JAR[^4][^5]。 - `${project.basedir}`:指向项目根目录,避免路径错误[^1][^2]。 #### **步骤 3:验证与使用** 1. **代码中直接引用**: ```java import com.example.ExternalClass; // 使用外部 JAR 的类 @RestController public class TestController { @GetMapping("/test") public String test() { return ExternalClass.doSomething(); // 调用外部 JAR 方法 } } ``` 2. **测试运行**:启动应用并访问 `/test` 接口,验证功能是否正常。 #### **步骤 4:打部署** 执行 Maven 命令打: ```bash mvn clean package ``` 生成的 `target/*.jar` 将含外部 JAR 文件。可通过以下命令检查: ```bash jar tf target/your-app.jar | grep example.jar ``` #### **常见问题解决** - **编译错误**:检查 `<systemPath>` 路径是否正确,确保 JAR 文件名无拼写错误[^2]。 - **打后缺失 JAR**:确认 `<includeSystemScope>true</includeSystemScope>` 配置已添加[^4][^5]。 - **依赖冲突**:若与其他库冲突,在 `pom.xml` 中使用 `<exclusions>` 排除冲突。 > **注意事项**: > 此方法适用于无法通过 Maven 仓库获取的私有或第三方 JAR。若 JAR 可上至私有仓库,建议使用 `<scope>compile` 替代 `system` 以简化管理[^2]。 --- ### 相关问题 1. 如何解决 Spring Boot 打后外部 JAR 缺失的问题? 2. 外部 JAR 与 Maven 依赖冲突时如何处理? 3. 除了 `system` 作用域,还有哪些方式引入本地 JAR? 4. 如何将多个外部 JAR 批量集成到 Spring Boot 项目? 5.Docker 容器中部署时,如何确保外部 JAR 路径正确加载? [^1]: IDEA Spring Boot项目导入外部jar。scope=system 表示此依赖是来自外部jar,而不是maven仓库。 [^2]: SpringBoot项目如何引入外部jar及将外部jar到项目发布jar。 [^4]: spring boot在项目中引入第三方外部jar集成为本地jar。否则maven打时会漏掉我们手动添加的jar。 [^5]: SpringBoot引入外部Jar(打)。第一步:Maven导入配置。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值