zoukankan      html  css  js  c++  java
  • Docker部署Springboot项目,Invalid or corrupt jarfile /app.jar

    问题:我打算编写一个dockerfile,其主要是部署一个springboot项目。当dockerfile构建完镜像,使用docker run 的时候报错。

    Dockerfile内容

    # jdk16是我自己构建的基于centos的java环境
    FROM jdk16:16.0.1
    MAINTAINER wx
    # volume 指定临时文件目录为/tmp
    # 其效果是在主机/var/lib/docker目录下创建一个临时文件,并连接到容器的/tmp
    VOLUME /tmp
    # 将jar包添加到容器中并更名
    COPY demo-0.0.1-SNAPSHOT.jar app.jar
    #
    RUN bash -c 'touch /app.jar'
    ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]
    #暴露8080端口
    EXPOSE 8080
    View Code

    问题根本原因:

     1. 没有理解 RUN bash -c 'touch /app.jar'。

     2. 未注意我的环境的默认路径不是根,而是自定义的/mydocker/jdk.

    解决思路:

    1. 这个问题是什么?

       字面的意思是这个app.jar不可用或者无效。本地java -jar 是可以跑起来的,那说明本地的包应该是没问题的。

    2. 难道是我的基础镜像环境有问题?

       验证环境问题,只需要将本地的一个目录挂载到依据基础镜像启动的容器就好了。具体

        docker run -it -d --name mytest -p 8070:8080 -v /Users/wx/myfile/docker_test/springboot:/data jdk16:16.0.1

      启动后在本地访问。发现是可以访问的。

    3. 这个时候我开始怀疑dockerfile写的有问题。

       排查也相对简单。我可以先将jar包copy进去,不启动看看能不能启动起来。发现是可以的。这个时候突然进入了默认的目录(/mydocker/jdk)。我也突然醒悟,我的app.jar并不在根目录,而在这个我设置的默认目录。所以dockerfile找不到这个jar包,启动报错。

       当我按照这个思路再次修改后构建、启动还是报错。我去掉执行的命令进入到容器中发现 /mydocker/jdk 和根目录都有这个jar包。不同的是根目录下的jar包大小为0,不能运行。

    4. 修改后正确的dockerfile. 

    FROM jdk16:16.0.1
    
    MAINTAINER wangxiang
    
    # volume 指定临时文件目录为/tmp
    # 其效果是在主机/var/lib/docker目录下创建一个临时文件,并连接到容器的/tmp
    VOLUME /tmp
    # 将jar包添加到容器中并更名
    COPY demo-0.0.1-SNAPSHOT.jar /app.jar
    #
    RUN bash -c 'touch /app.jar'
    # ENTRYPOINT ["java", "-Djava.security.egd=file:/dev/./urandom", "-jar", "/app.jar"]
    #暴露8080端口
    # EXPOSE 8080
    View Code
  • 相关阅读:
    android入门教程(十六)之 使用Intent传递数据
    Android入门教程(十八)之ListView (二) (转)
    Android入门教程(十四)之ListView的应用 (转)
    Android入门教程(十七)之GridView(转自http://blog.csdn.net/hellogv/)
    (原创)Android入门教程(十五)之 Activity生命周期及其配置使用
    Android入门教程(十九)之ListView (三) (转)
    Android入门教程(十三)之自定义下拉菜单模式Spinner与setDropDownViewResource的应用(转)
    Android入门教程(十)之Menu功能菜单设计 (转)
    [vp]ARC059
    欧拉路学习笔记
  • 原文地址:https://www.cnblogs.com/wangxiangstudy/p/14808372.html
Copyright © 2011-2022 走看看