由于自己是从基础开始,免不了看博客,复制粘贴docker file文件。

看博客有提到是,原封不动地copy 别人的dockerfile文件,jar包的名称没有改变,但是我觉得应该不会犯这个错误。

或者是自己的jar包就有问题,我们可以自己在idea里面运行成功后,再install,确保保证jar包的正确性。

以上是可能的两个错误。

经过分析后,出现的英文invalid or corrupt jarfile /app.jar,中文意思是jarfile/app.jar无效或损坏
我觉得是app.jar这个文件根本不存在,启动jar包命令,读取不到这个包,附上之前错误的时候的dockerfile,也是在网上复制粘贴的一份,没有经过思考,导致出现错误,耽误时间

FROM  jdk1.8:latest
ADD docker-0.0.1-SNAPSHOT.jar   app.jar
EXPOSE 8087
ENTRYPOINT ["java","-jar","/app.jar"]

图中,就是在ADD指令出现错误。
ADD指令
ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录、以及一个URL标记的文件 拷贝到镜像中。
其格式是: ADD 源路径 目标路径

如果源路径是个文件,且目标路径是不是以 / 结尾,则docker会把目标路径当作一个文件。
如果目标路径不存在,会以目标路径为名创建一个文件,内容同源文件;
所以此处犯的错误就是,目标路径app.jar不是一个路径,需要加上“/”,变为

FROM  jdk1.8:latest
ADD docker-0.0.1-SNAPSHOT.jar   /app.jar
EXPOSE 8087
ENTRYPOINT ["java","-jar","/app.jar"]

修改完dockerfile后,再次docker build,docker run,就可以成功运行了。
自此,就完成了springboot jar包,打包到自己的镜像,并成功运行。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐