发布于2026-07-07 阅读(0)
扫一扫,手机访问
先修改一下初始化Spring Boot项目的URL地址——打开IDEA,依次点击File→New Project,找到Spring Initializr,点击设置图标,然后在Server URL一栏填入https://start.aliyun.com/,确认即可。

接下来填写项目名称,比如叫demo,选择好合适的存放路径,语言选Ja va,类型用Ma ven,这里以JDK8为例,所以Ja va版本选8,打包方式选Jar,点击Next继续往下走。

Spring Boot版本我们选择2.7.6,然后点击Web模块,勾选Spring Web,最后点击Create完成项目创建。


项目创建好后,可以查看一下启动类DemoApplication.ja va,确认一下它的结构。

直接点击旁边的三角形按钮运行项目。

选择Run 'DemoApplication'启动。

启动成功后,浏览器访问localhost:8080/html,可以看到阿里云初始化时提供的模板页面。

感兴趣的话也可以在里面添加自己的业务代码,测试通过后再往下处理。测试完成后记得先停掉运行中的程序。

点击右侧的Ma ven面板,展开项目的Lifecycle,按住Ctrl键同时选中clean和package,再点击上方三角形图标开始打包。

等看到控制台输出BUILD SUCCESS,说明打包成功了。根据日志提示,生成的jar包就在工程目录下的target目录里。

到target目录下一看,demo-0.0.1-SNAPSHOT.jar就在那里,说明一切顺利。

在项目根目录新建一个Dockerfile文件。

文件名称必须写为Dockerfile,大小写和拼写都不能错。

Dockerfile的内容如下——使用JDK8作为基础镜像,复制jar包到容器里,设置容器启动时执行ja va -jar命令:
# 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 ["ja va","-jar","/app.jar"]
写好后的效果如下。

在Linux上先创建一个demo目录。
[root@localhost ~]# mkdir demo
分别把上面的Dockerfile和demo-0.0.1-SNAPSHOT.jar上传到这个目录里。上传成功后,用ls命令查看,应该能看到这两个文件。
[root@localhost ~]# cd demo [root@localhost demo]# ls Dockerfile demo-0.0.1-SNAPSHOT.jar
接下来执行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 fa v 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 fa vor 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
用下面这条命令运行容器,将宿主机的8080端口映射到容器内的8080端口。
docker run -d -p 8080:8080 --name spring-boot-jdk8 spring-boot-jdk8-demo:1.0
浏览器访问Linux ip:8080/html,却发现页面无法访问。

用docker ps查看,发现容器并没有在运行。
[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 "ja va -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给跳过了。

解决方法很简单:把pom.xml中mainClass下面的这一行删掉。
true
修改后的pom.xml效果如下。

记得刷新一下Ma ven项目。

重新打jar包,生成新的demo-0.0.1-SNAPSHOT.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,这次就能正常看到页面内容了。

售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8