竹子建站登录,创意网页设计论文,网站建设中 即将上线html5源代码,wordpress 网站登录天行健#xff0c;君子以自强不息#xff1b;地势坤#xff0c;君子以厚德载物。 每个人都有惰性#xff0c;但不断学习是好好生活的根本#xff0c;共勉#xff01; 文章均为学习整理笔记#xff0c;分享记录为主#xff0c;如有错误请指正#xff0c;共同学习进步。… 天行健君子以自强不息地势坤君子以厚德载物。 每个人都有惰性但不断学习是好好生活的根本共勉 文章均为学习整理笔记分享记录为主如有错误请指正共同学习进步。 文章目录 1. 场景2. 报错3. 分析4. 解决4.2 配置manifest文件4.2 配置指定main class 尝试此篇之前请先看另一篇推荐no main manifest attribute, in app.jar
1. 场景
K8S部署Java项目 pod报错
2. 报错
使用log命令查看日志报错如下
kubectl logs podname -n ns-sbno main manifest attribute, in app.jar截图
3. 分析
报错表示在app.jar中无法找到主类也就是说在app.jar中无法识别main方法程序入口 拓展两个词manifest文件和main class
manifest文件是一个文本文件用来描述jar包的元信息、版本信息、作者信息等manifest文件通常放在jar包的META-INF文件夹下命名为MANIFEST.MFmain class是一个Java程序的入口在执行Java程序是会先找到这个类执行类中的main方法在jar包中如果没有配置mainfest文件则需要在执行时指定main class否则无法执行
no main manifest attribute, in app.jar表示既没有配置manifest文件也没有指定main class接下来我们配置一下即可
4. 解决
4.2 配置manifest文件
在jar包中的META-INF文件夹没有就创建一个中创建MANIFEST.MF文件 并在文件中定义内容如下
Manifest-Version: 1.0 Main-Class: com.gitlab_runner.Applicationcom.gitlab_runner.Application是main方法所在的类Application的包路径根据自己的定义
4.2 配置指定main class
在执行jar包命令程序中添加参数指定main class路径 在Dockerfile的Java执行程序命令中添加指定主类配置
java -cp app.jar com.gitlab_runner.Application-cp表示classpath就是app.jar的main class路径
Dockerfile文件内容为
#关键字和值之间可以是空格 也可以是等号
#指定基础镜像以此镜像为基础构建
FROM openjdk:8-jdk-alpine#作者
MAINTAINER hs#设置环境变量
#JAVA_HOME环境变量定义即配置jdk安装目录路径需是jdk文件全路径名
ENV JAVA_HOME/usr/local/java/jdk1.8.0.121
#MAVEN环境变量定义即maven安装的位置需是maven全路径名
ENV MAVEN_HOME/usr/share/maven
#配置环境变量
ENV PATH$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin
#指定容器的时区
ENV TZAsia/Shanghai#复制文件到镜像中将本地文件或目录复制到镜像指定位置该操作也在.gitlab-ci.yml文件中脚本进行执行了
COPY app.jar app.jar#时区配置可省略
#RUN ln -snf /usr/share/zonginfo/$TZ /etc/localtime echo $TZ /etc/timezone#容器入口该命令应该是将每个字符串组合起来nohub java -jar app.jar
ENTRYPOINT [nohup,java,-jar,-cp,app.jar,com.gitlab_runner.Application]#声明要监听的端口暴露端口容器内部的端口这里暂时不用
EXPOSE 8089那么我们是maven项目maven项目配置指定识别的插件即可在pom中配置插件
感谢阅读祝君暴富