Docker run报错no main manifest attribute, in app.jar
将插件的 <skip>true</skip> 替换成 <layout>JAR</layout>
原来的写法

修改的写法

Docker启动容器报错:java版本不兼容
报错信息
Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.UnsupportedClassVersionError: org/springframework/boot/loader/launch/JarLauncher has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 52.0问题解释:容器使用的是较新的java编译的(class file version 61.0),但是当前系统java运行环境只能识别到52.0
常见的版本对应关系
JAVA版本 class file version Java 8 class file version 52.0 Java 9 class file version 53.0 Java 10 class file version 54.0 Java 11 class file version 55.0 Java 12 class file version 56.0 Java 13 class file version 57.0 Java 14 class file version 58.0 Java 15 class file version 59.0 Java 16 class file version 60.0 Java 17 class file version 61.0 Java 18 class file version 62.0 Java 19 class file version 63.0 Java 20 class file version 64.0 Java 21 class file version 65.0 所以需要修改Dockerfile文件,指定openjdk的版本
dockerfileFROM anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/openjdk:17-8.6 COPY /target/mcp-0.0.1-SNAPSHOT.jar mcp.jar EXPOSE 8888 ENTRYPOINT ["java", "-jar", "mcp.jar"]扩展点
如何确定打包后的jar包所用的jdk版本?
查看jar包下的 META-INF/MANIFEST.MF 文件中的 Build-Jdk-Spec的版本

获取基础镜像
登录阿里云,打开容器镜像服务页面,搜索jdk 容器镜像服务 ACR 控制台

查看制品地址和版本号

制品地址:版本号,即为基础镜像