关于docker容器部署springboot项目出现的问题
通过app镜像创建容器使用docker run --id name=springboot_project -p 9000:8080 app并启动后,本来这条命令是创建并启动容器的,但是通过docker ps -a 查看后发现,容器并没有启动成功。
接着使用命令docker logs (我的容器id) 查看问题所在,发现报错
XXXXXX has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0。
找了下百度翻译,解释如下:
xxxx是由最新版本的Java运行时(类文件版本55.0)编译的,这个版本的Java运行时只识别高达52.0的类文件版本。
于是我使用jdk1.8重新配置了下环境变量还有,idea中的jdk配置。最后如果在idea中用Maven编译的话,需要设置一下默认编译使用的JDK。
关于JDK安装、java环境配置点击蓝色字可以查看。
这篇是关于IDEA使用不同JDK的配置
接着如果需要用到IDEA中的Maven编译文件,则需要修改对应的jdk。
选择File->settings->Build,Execution,Deployment->Build Tools->Maven->Importing->
找到下方的红色框框选中刚刚设置的jdk
选择应用,就完成了配置了。
当我以为结束的时候,通过java -jar XXXX 启动springboot项目时,发现了xxxxxx.jar中没有主清单属性报错,需要的同学可以点击蓝字。如果这一步没有问题了,那个按照正常的流程执行就可以了。
没有主清单属性的这个解决的方法也比较简单,就是在pom文件中的plugin标签下添加
<!-- 这个插件,可以将应用打包成一个可执行的jar包 -->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
为此我还特地找了下repackage起什么作用,这篇spring-boot-maven插件repackage(goal)的那些事有详细解释。
还有安装docker,使用阿里云镜像加速器会出现docker服务无法启动的问题,当时我查看了一下,一直找不到解决方案,网上大部分都说要注意json文件的问题,Docker容器启动失败Failed to start Docker Application Container Engine的解决办法,但是实际上我自己是因为防火墙没有关闭所导致的。这里真的花了好久时间,有点小裂开。
查看防火墙状态
firewall-cmd --state
停止firewall
systemctl stop firewalld.service
禁止firewall开机启动
systemctl disable firewalld.service
大概遇到的问题就是这些了,大家觉得有帮助就顺手点个赞呗!蟹蟹!