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运行服务时,一定要注意服务器上面的环境和容器内的环境是不一样的,因此
在使用带有路径的各种操作时,一定需要特别注意路径如何挂载的问题!!!