docker部署服务,本地文件路径正常,linux服务器文件路径找不到的小坑
还是想每天坚持写点什么,也是菜的出奇,只能写一些很表层的东西。今天就记录一下工作中遇到docker部署到linux服务器的一个小坑。
项目中有个预览功能,要求返回给前台base64的图片,但是ftp上只有pdf格式,所以要先将pdf文件在后台转化成jpg放在本地默认的临时文件夹(System.getProperty("java.io.tmpdir"))下,然后通过流读取本地的jpg文件来返回给前端,再删除本地的文件。
刚开始是没有用docker,直接以jar包的形式在linux上部署运行,是没有问题的。但是用了docker部署之后,本地正常,服务器一直报错找不到文件,这个问题找了一下午(第一次用docker)。最后才发现是docker这个虚拟化容器导致的路径问题。
因为在linux上直接用jar运行,代码里的System.getProperty("java.io.tmpdir")指向的是linux的根目录下的tmp文件夹,生成的jpg文件会自动创建到tmp中,所以不会报找不到文件的异常。但是用了docker部署之后,因为docker也相当于一个精简版的linux容器,他有自己的路径,跟宿主linux的路径不一致,所以就会报找不到文件的异常。
解决这个问题的方法有两种:
1.代码中如果要生成临时文件到本地,最好在默认的工作目录下新建一个file的目录,及System.getProperty("user.dir")+“file”(代码中判断,如果没有则新建),这个路径其实就是你的项目根路径的file文件夹,在linux中就是根目录下的file文件夹,然后直接将宿主根目录的file文件夹(自己建的)挂载到docker的根目录下的file文件夹(问题其实就是生成的文件在docker容器中的/file文件夹中而不在linux的/file下)。这样就解决了因为docker容器造成的与linux宿主容器路径不一致的问题。
2.挂载宿主的tmp文件夹到docker容器里对应的文件夹(如何操作先看看docker配置,我就只说思路了,未亲测)。
文笔很水,无力吐槽自己,继续努力吧!!!
docker部署服务,本地文件路径正常,linux服务器文件路径找不到的小坑相关推荐
- 手机端通过软件Es文件浏览器访问Linux服务器文件(局域网或远程服务器)
知识点: 1. 手机客户端Es文件浏览器 2. Sftp 3. ftp 步骤: 1.在Linux系统中,用命令方式输入ipconfig命令获取该服务器的ip地址为192.168.20.104 2.用手 ...
- docker部署服务实现文件上传到本地问题解决
docker部署服务实现文件上传到本地问题解决 参考文章: (1)docker部署服务实现文件上传到本地问题解决 (2)https://www.cnblogs.com/yy136/p/9609634. ...
- python下载文件传到服务器_windows上python上传下载文件到linux服务器指定路径【转】...
从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...
- Centos,docker部署服务,telnet端口不通
问题描述 近期在项目上使用docker部署服务时,服务无法被正常调用,服务端口telnet不通.宿主机ip可以ping通,宿主机上部署服务端口可以telnet通,宿主机可以telnet通docker服 ...
- linux服务器监控谁改了文件,linux服务器文件监控
linux服务器文件监控 内容精选 换一换 为了防止您的主机被勒索病毒侵害,请创建防护策略,将重点防御的文件添加到防护策略的监控路径中,并启动机器学习.机器学习会自动聚类并收集该策略下的所有服务器的正 ...
- linux中文件链接,关于Linux中文件,链接的一些思考
在Unix系统中,操作系统为磁盘上的文本与图像,鼠标键盘操作,网络交互等IO操作设计了一组通用API. 使他们被处理的时候可统一用字节流的方式.所以说,除了进程之外,其他的一切均可看做文件. Linu ...
- 文件上传linux服务器,Linux 文件上传Linux服务器
进入命令行 在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI).CLI只能接受文本输入,也只能显示 ...
- java SFTP下载,读取linux服务器文件
一 SFTP下载,读取linux服务器文件 1 导入依赖 <dependency><groupId>org.apache.camel</groupId><ar ...
- 15个有趣的工具和服务来监控您的Linux服务器
30个有趣的工具和服务来监控您的Linux服务器 前言 Webmin Grafana on Prometheus Cockpit M/Monit Netdata Netdata Checkmk Ope ...
- 通过浏览器访问linux服务器文件(图片)
通过浏览器访问linux服务器文件(图片) 一. 安装jdk yum install -y java-1.8.0-openjdk-devel.x86_64 查看java是否安装成功 java -ver ...
最新文章
- ATS 5.3.0日志字段分析(续)
- 分析RAC下一个SPFILE整合的三篇文章的文件更改
- mysql构建镜像时写入密码_用Dockerfile手动创建mysql5.7主从镜像
- python matplotlib.pyplot中add_subplot subplot函数的用法与区别(其实没什么区别)
- android 屏幕切换监听
- 边缘计算框架_黑科技 | 英特尔发布边缘计算加速框架最新版本 | OpenVINO 2019R02...
- discuz完善用户资料任务不能完成的解决方法
- Mysql 时间类型整理
- 怎样把网站js文件合并成一个?几种方法可以实现
- Android-蓝牙AVRCP 以及 绝对音量(absolute volume)概述-A2dp-hfp
- Windows ToolTips简要介绍
- ds5100更换电池 ibm_IBMDS5100更换电池
- springboot项目运行错误‘com.wei.service.UserService‘ in your configuration
- Android开发_ARN是什么
- 计算机比赛小组名称和口号,小组名称口号大全(精选150个)
- 根据屏幕大小动态设置字体rem
- asp.net ajax1.0基础回顾(三):UpdatePanel的基本用法
- TOMCAT崩溃事件
- 【解决方案】GB28181/RTSP/SDK/Ehome协议支持级联视频智能分析平台EasyCVR搭建小区园区视频监控系统
- Ajax面试题 | 前端