SpringBoot构建Docker镜像的实现步骤
1.前提条件
- Windows下安装好JDK 8+、Maven 3.6+、IDEA
- Linux下安装好Docker
2.新建Spring Boot项目
修改初始化Spring Boot项目URL:打开IDEA,点击File-->New Project,点击Spring Initializr,点击设置图标,填写Server URL地址为https://start.aliyun.com/
点击OK

填写工程名称(Name),例如demo,选择在合适位置(Location)创建工程,语言(Language)选Java,类型(Type)选Maven,这里以JDK8为例,Java选择8(若使用高版本JDK就选中对应的高版本JDK),打包(Packaging)选择Jar,点击Next

Spring Boot版本选择2.7.6,点击Web,勾选Spring Web,点击Create创建Spring Boot项目


查看启动类DemoApplication.java

点击如下三角形,运行Spring Boot项目

选择Run 'DemoApplication'

浏览器访问localhost:8080/html

看到的页面内容是阿里云初始化Spring Boot项目时提供的初始模板代码,感兴趣也可以添加自己编写的代码,并测试通过
停止运行程序

3.打jar包
点击右侧的Maven打开Maven面板,点开项目名称的Lifecycle,按住Ctrl键不放,同时选中clean和package,点击图示三角形图标打包项目

看到BUILD SUCCESS字样输出,说明打jar包成功。根据日志提示可以看到jar在工程目录的target目录下

在target目录下看到jar文件demo-0.0.1-SNAPSHOT.jar,说明打包成功

4.编写Dockerfile
在项目根目录新建Dockerfile文件

填写文件名称为Dockerfile

注意:文件名必须为Dockerfile
Dockerfile内容如下:
# JDK8作为基础镜像 # FROM openjdk:8 FROM registry.cn-hangzhou.aliyuncs.com/my-common-images/openjdk:8 # 作者 MAINTAINER example # 复制jar COPY demo-0.0.1-SNAPSHOT.jar app.jar # 启动命令 ENTRYPOINT ["java","-jar","/app.jar"]
效果如下

5.上传Dockerfile和jar包到Docker所在的Linux机器
Linux创建demo目录
[root@localhost ~]# mkdir demo
分别上传Dockerfile和demo-0.0.1-SNAPSHOT.jar到Linux demo目录下,上传成功后可查看到文件如下:
[root@localhost ~]# cd demo [root@localhost demo]# ls Dockerfile demo-0.0.1-SNAPSHOT.jar
6.构建Docker镜像
执行docker build命令构建镜像
docker build -t spring-boot-jdk8-demo:1.0 .
操作过程如下
[root@localhost demo]# docker build -t spring-boot-jdk8-demo:1.0 . [+] Building 0.0s (7/7) FINISHED docker:default => [internal] load build definition from Dockerfile 0.0s => => transferring dockerfile: 292B 0.0s => WARN: MaintainerDeprecated: Maintainer instruction is deprecated in fav 0.0s => [internal] load metadata for registry.cn-hangzhou.aliyuncs.com/my-commo 0.0s => [internal] load .dockerignore 0.0s => => transferring context: 2B 0.0s => CACHED [1/2] FROM registry.cn-hangzhou.aliyuncs.com/my-common-images/op 0.0s => [internal] load build context 0.0s => => transferring context: 6.05kB 0.0s => [2/2] COPY demo-0.0.1-SNAPSHOT.jar app.jar 0.0s => exporting to image 0.0s => => exporting layers 0.0s => => writing image sha256:db084d7b5dbee75438b823914f7ea8bfafd0a942c610adc 0.0s => => naming to docker.io/library/spring-boot-jdk8-demo:1.0 0.0s 1 warning found (use docker --debug to expand): - MaintainerDeprecated: Maintainer instruction is deprecated in favor of using label (line 6) [root@localhost demo]#
查看镜像
[root@localhost demo]# docker images | grep spring-boot spring-boot-jdk8-demo 1.0 db084d7b5dbe About a minute ago 526MB
7.运行容器
docker run -d -p 8080:8080 --name spring-boot-jdk8 spring-boot-jdk8-demo:1.0
8.测试访问及排错
浏览器访问
Linux ip:8080/html
发现访问不到内容

排错:发现容器没有起来
[root@localhost demo]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost demo]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2640f7e02e57 spring-boot-jdk8-demo:1.0 "java -jar /app.jar" About a minute ago Exited (1) About a minute ago spring-boot-jdk8
查看容器日志:发现no main manifest attribute, in /app.jar问题
[root@localhost demo]# docker logs spring-boot-jdk8 no main manifest attribute, in /app.jar
原因是pom.xml中mainClass主类配置被skip为true忽略了

解决
删除mainClass下方的skip一行
<skip>true</skip>
修改pom.xml后,效果如下

刷新maven项目

重新打jar包

重新上传jar包到Linux demo目录
删除原来的容器
[root@localhost ~]# docker rm spring-boot-jdk8
删除原来的镜像
[root@localhost demo]# docker rmi -f spring-boot-jdk8-demo:1.0
重新构建镜像
[root@localhost demo]# docker build -t spring-boot-jdk8-demo:1.0 .
重新运行容器
[root@localhost demo]# docker run -d -p 8080:8080 --name spring-boot-jdk8 spring-boot-jdk8-demo:1.0
浏览器访问
Linux ip:8080/html

到此这篇关于SpringBoot构建Docker镜像的实现步骤的文章就介绍到这了,更多相关SpringBoot构建Docker镜像内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
springboot接收http请求,解决参数中+号变成空格的问题
这篇文章主要介绍了springboot接收http请求,解决参数中+号变成空格的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2021-08-08
Java生成随机数之Random与ThreadLocalRandom性能比较详解
大家项目中如果有生成随机数的需求,我想大多都会选择使用Random来实现,它内部使用了CAS来实现。 实际上,JDK1.7之后,提供了另外一个生成随机数的类ThreadLocalRandom,那么他们二者之间的性能是怎么样的呢?本文就来详细说说2022-12-12
springcloud-eureka与gateway简易搭建过程
文章介绍了如何搭建Eureka服务注册中心和Spring Cloud Gateway网关,对于Eureka,首先创建eureka-server项目,配置依赖和属性,启动后通过控制台查看服务注册状态,对于Spring Cloud Gateway,创建gateway项目,配置依赖和属性,启动后测试路由转发功能,感兴趣的朋友一起看看吧2025-12-12


最新评论