当前位置: 代码网 > it编程>编程语言>Java > SpringBoot构建Docker镜像的实现步骤

SpringBoot构建Docker镜像的实现步骤

2026年05月07日 Java 我要评论
1.前提条件windows下安装好jdk 8+、maven 3.6+、idealinux下安装好docker2.新建spring boot项目修改初始化spring boot项目url:打开idea,

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镜像内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com