【java】springboot项目打包成docker镜像

简介: 【java】springboot项目打包成docker镜像

背景


我们的服务是springboot开发的,但是部署的时候是使用的docker部署的,所以在打包的时候,需要打包成docker image,下面说说如何进行配置,才能在package的时候得到docker镜像。


环境


本地环境打包的话,要求在本机安装了docker才可以,大家注意一下。


配置


pom配置


    <version>1.0</version>
    <artifactId>user-service</artifactId>
    <properties>
        <docker.image.prefix>user-service</docker.image.prefix>
    </properties>
 <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <version>2.5.5</version>
            </plugin>
            <plugin>
                <groupId>com.spotify</groupId>
                <artifactId>dockerfile-maven-plugin</artifactId>
                <version>1.4.13</version>
                <executions>
                    <execution>
                        <id>default</id>
                        <goals>
                            <goal>build</goal>
                            <goal>push</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <repository>${docker.image.prefix}/${project.artifactId}</repository>
                    <!--                    <repository>bms/${project.artifactId}</repository>-->
                    <tag>${project.version}</tag>
                    <buildArgs>
                        <JAR_FILE>${project.build.finalName}.jar</JAR_FILE>
                    </buildArgs>
                </configuration>
            </plugin>
        </plugins>
    </build>


Dockerfile


FROM openjdk:8u312-oraclelinux8
EXPOSE 8080
ARG JAR_FILE
ADD target/user-service-1.0.jar user-service-1.0.jar
ENTRYPOINT ["sh","-c","java -jar /user-service-1.0.jar"]


然后就可以了,其他没有啥特别要修改的地方。


注意事项


但是我一开始配置的时候,看plugin的部分,我把spring-boot-maven-plugin放到了dockerfile-maven-plugin后面,导致出现了很诡异的现象,就是我在本地打包的时候,第一次打包出来的镜像,永远启动不起来,并且run的时候会提示


no main manifest attribute, in /user-service-1.0.jar


但是不clean的前提下,再次package,就会得到一个可以使用的image,然后和第一次package出来的image大小也不一样。


测试环境则是一次都没成功运行起来过。


所以注意:


spring-boot-maven-plugin 一定要放到 dockerfile-maven-plugin 前面!!!


spring-boot-maven-plugin 一定要放到 dockerfile-maven-plugin 前面!!!


spring-boot-maven-plugin 一定要放到 dockerfile-maven-plugin 前面!!!


不然就会导致docker开始造镜像的时候没有jar可以用。


相关文章
|
4月前
|
安全 Java API
Java Web 在线商城项目最新技术实操指南帮助开发者高效完成商城项目开发
本项目基于Spring Boot 3.2与Vue 3构建现代化在线商城,涵盖技术选型、核心功能实现、安全控制与容器化部署,助开发者掌握最新Java Web全栈开发实践。
490 1
|
5月前
|
前端开发 Java API
2025 年 Java 全栈从环境搭建到项目上线实操全流程指南:Java 全栈最新实操指南(2025 版)
本指南涵盖2025年Java全栈开发核心技术,从JDK 21环境搭建、Spring Boot 3.3实战、React前端集成到Docker容器化部署,结合最新特性与实操流程,助力构建高效企业级应用。
1655 1
|
5月前
|
JavaScript Java 微服务
现代化 Java Web 在线商城项目技术方案与实战开发流程及核心功能实现详解
本项目基于Spring Boot 3与Vue 3构建现代化在线商城系统,采用微服务架构,整合Spring Cloud、Redis、MySQL等技术,涵盖用户认证、商品管理、购物车功能,并支持Docker容器化部署与Kubernetes编排。提供完整CI/CD流程,助力高效开发与扩展。
673 64
|
4月前
|
IDE 安全 Java
Lombok 在企业级 Java 项目中的隐性成本:便利背后的取舍之道
Lombok虽能简化Java代码,但其“魔法”特性易破坏封装、影响可维护性,隐藏调试难题,且与JPA等框架存在兼容风险。企业级项目应优先考虑IDE生成、Java Records或MapStruct等更透明、稳健的替代方案,平衡开发效率与系统长期稳定性。
222 1
|
6月前
|
开发工具 Docker Windows
OpenWrt 通过Docker单独打包passwall ipk
OpenWrt 通过Docker单独打包passwall ipk
|
4月前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
6月前
|
Java 数据库连接 API
Java 8 + 特性及 Spring Boot 与 Hibernate 等最新技术的实操内容详解
本内容涵盖Java 8+核心语法、Spring Boot与Hibernate实操,按考试考点分类整理,含技术详解与代码示例,助力掌握最新Java技术与应用。
198 2
|
6月前
|
安全 Java 测试技术
Java 大学期末实操项目在线图书管理系统开发实例及关键技术解析实操项目
本项目基于Spring Boot 3.0与Java 17,实现在线图书管理系统,涵盖CRUD操作、RESTful API、安全认证及单元测试,助力学生掌握现代Java开发核心技能。
357 0
|
6月前
|
安全 JavaScript Java
java Web 项目完整案例实操指南包含从搭建到部署的详细步骤及热门长尾关键词解析的实操指南
本项目为一个完整的JavaWeb应用案例,采用Spring Boot 3、Vue 3、MySQL、Redis等最新技术栈,涵盖前后端分离架构设计、RESTful API开发、JWT安全认证、Docker容器化部署等内容,适合掌握企业级Web项目全流程开发与部署。
520 0
|
6月前
|
人工智能 安全 Java
掌握Java反射:在项目中高效应用反射机制
Java反射是一种强大功能,允许程序在运行时动态获取类信息、创建对象、调用方法和访问字段,提升程序灵活性。它在框架开发、动态代理、注解处理等场景中广泛应用,如Spring和Hibernate。但反射也存在性能开销、安全风险和代码复杂性,应谨慎使用。
148 0

热门文章

最新文章