还是想每天坚持写点什么,也是菜的出奇,只能写一些很表层的东西。今天就记录一下工作中遇到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服务器文件路径找不到的小坑相关推荐

  1. 手机端通过软件Es文件浏览器访问Linux服务器文件(局域网或远程服务器)

    知识点: 1. 手机客户端Es文件浏览器 2. Sftp 3. ftp 步骤: 1.在Linux系统中,用命令方式输入ipconfig命令获取该服务器的ip地址为192.168.20.104 2.用手 ...

  2. docker部署服务实现文件上传到本地问题解决

    docker部署服务实现文件上传到本地问题解决 参考文章: (1)docker部署服务实现文件上传到本地问题解决 (2)https://www.cnblogs.com/yy136/p/9609634. ...

  3. python下载文件传到服务器_windows上python上传下载文件到linux服务器指定路径【转】...

    从windows上传文件到linux,目录下的文件夹自动创建 #!/usr/bin/env python # coding: utf-8 import paramiko import datetime ...

  4. Centos,docker部署服务,telnet端口不通

    问题描述 近期在项目上使用docker部署服务时,服务无法被正常调用,服务端口telnet不通.宿主机ip可以ping通,宿主机上部署服务端口可以telnet通,宿主机可以telnet通docker服 ...

  5. linux服务器监控谁改了文件,linux服务器文件监控

    linux服务器文件监控 内容精选 换一换 为了防止您的主机被勒索病毒侵害,请创建防护策略,将重点防御的文件添加到防护策略的监控路径中,并启动机器学习.机器学习会自动聚类并收集该策略下的所有服务器的正 ...

  6. linux中文件链接,关于Linux中文件,链接的一些思考

    在Unix系统中,操作系统为磁盘上的文本与图像,鼠标键盘操作,网络交互等IO操作设计了一组通用API. 使他们被处理的时候可统一用字节流的方式.所以说,除了进程之外,其他的一切均可看做文件. Linu ...

  7. 文件上传linux服务器,Linux 文件上传Linux服务器

    进入命令行 在图形化桌面出现之前,与Unix系统进行交互的唯一方式就是借助由shell所提供的文本命令行界面(command line interface,CLI).CLI只能接受文本输入,也只能显示 ...

  8. java SFTP下载,读取linux服务器文件

    一 SFTP下载,读取linux服务器文件 1 导入依赖 <dependency><groupId>org.apache.camel</groupId><ar ...

  9. 15个有趣的工具和服务来监控您的Linux服务器

    30个有趣的工具和服务来监控您的Linux服务器 前言 Webmin Grafana on Prometheus Cockpit M/Monit Netdata Netdata Checkmk Ope ...

  10. 通过浏览器访问linux服务器文件(图片)

    通过浏览器访问linux服务器文件(图片) 一. 安装jdk yum install -y java-1.8.0-openjdk-devel.x86_64 查看java是否安装成功 java -ver ...

最新文章

  1. ATS 5.3.0日志字段分析(续)
  2. 分析RAC下一个SPFILE整合的三篇文章的文件更改
  3. mysql构建镜像时写入密码_用Dockerfile手动创建mysql5.7主从镜像
  4. python matplotlib.pyplot中add_subplot subplot函数的用法与区别(其实没什么区别)
  5. android 屏幕切换监听
  6. 边缘计算框架_黑科技 | 英特尔发布边缘计算加速框架最新版本 | OpenVINO 2019R02...
  7. discuz完善用户资料任务不能完成的解决方法
  8. Mysql 时间类型整理
  9. 怎样把网站js文件合并成一个?几种方法可以实现
  10. Android-蓝牙AVRCP 以及 绝对音量(absolute volume)概述-A2dp-hfp
  11. Windows ToolTips简要介绍
  12. ds5100更换电池 ibm_IBMDS5100更换电池
  13. springboot项目运行错误‘com.wei.service.UserService‘ in your configuration
  14. Android开发_ARN是什么
  15. 计算机比赛小组名称和口号,小组名称口号大全(精选150个)
  16. 根据屏幕大小动态设置字体rem
  17. asp.net ajax1.0基础回顾(三):UpdatePanel的基本用法
  18. TOMCAT崩溃事件
  19. 【解决方案】GB28181/RTSP/SDK/Ehome协议支持级联视频智能分析平台EasyCVR搭建小区园区视频监控系统
  20. Ajax面试题 | 前端

热门文章

  1. 花园与溪流:建造花园的人将赢得未来
  2. 基于Python实现的遗传算法求最值问题
  3. windows以及mac本地安装homestead
  4. 【Unity 03】高通 AR SDK基本使用以及项目发布
  5. Android 3A 状态之 AF(对焦)
  6. 114.Livy配置
  7. Js插件之JqGrid的使用
  8. 站队 第一类斯特林数 csJ精英挑战营习题
  9. 数据库服务器不支持innodb存储引擎,MySQL InnoDB存储引擎表损坏恢复指南
  10. ParseObject和ParseArray