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运行服务时,一定要注意服务器上面的环境和容器内的环境是不一样的,因此

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