• docker运行javaWeb服务,操作文件异常


    一、问题由来

      部署一个测试服务在自己的服务器上面,然后运行其中的一个功能。然后报错,报错信息如下

     

     

    二、问题分析

      自己一开始也很疑惑,怎么会出现这个问题呢,自己明明把对应的文件放在对应的目录下面,并且已经解压。

     

     

    如果所示,理论上来说不应该啊。可是程序运行的时候,确确实实地出现了该问题。经过自己仔细分析,发现容器

    中的环境和linux服务器上面的环境是不一样的。自己在Linux服务器上面创建得有对应的目录,可是在容器中不一定会有该目录,

    容器时一个独立的环境。

    三、解决方案

      自己在对应的目录下面创建一个新的目录,将之前的文件全部移动到当前目录下来。然后使用路径挂载的方式,将当前这个目录

    中的文件挂载到容器中,这样就可以解决这个问题,如下图所示,

     

     

    然后设置配置文件中的挂载路径如下,

     

     

    启动项目时命令如下,使用路径挂载,

    docker run -d -p 8081:8081-v /opt/u01/exam/java:/project -e JVM_XMS=256m -e JVM_XMX=256m \

    --name webbackend openjdk:8 \

    java -jar /project/WebBackend.jar

    参数解释

    -e JVM_XMS=256m 表示启动时的内存

     -e JVM_XMX=256m 表示运行时的最大内存

     

    启动之后,内存也还比较富余,不至于让服务器内存挂掉。

     

     

    最终测试效果如下。

     

     

    下载的文件示例如下。

     

     

    总结:使用docker运行服务时,一定要注意服务器上面的环境和容器内的环境是不一样的,因此

    在使用带有路径的各种操作时,一定需要特别注意路径如何挂载的问题!!!

  • 相关阅读:
    AutoSAR EcuM系列04- Flex EcuM的ECU启动阶段详细教程
    iNFTnews|FTX一夜崩塌,但Web3仍前途光明
    jedis:使用事务开启watch监控
    结构体类型数据单链表的操作
    linux 安装Docker
    Kubernetes资源编排系列之三: Kustomize篇
    MySQL字符集
    【LeetCode15. 三数之和】——set型哈希表、双指针法
    TF-IDF、BM25传统算法总结
    scanf、cin及其优化、快读性能测试
  • 原文地址:https://www.cnblogs.com/yilangcode/p/18116311