• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
IT联盟之家-ithome8
博客园    首页    新随笔    联系   管理    订阅  订阅
.NETCore文件上传将文件保存到docker容器以外的文件夹

最近在开发一个文件服务,用于公司内容各应用的文件保存和查询获取。

开发环境:windows10+.NET Core7.0+Mysql   发布环境 :Liunx+Docker

实现功能:文件服务提供接口上传文件和下载文件,服务用于内网访问。
实现中遇到的问题:由于文件保存是用的系统自带文件服务。而部署环境是Liunx+Docker,Docker是文件是隔离的,所以在使用docker部署的应用中,正常情况下只能访问docker内的文件,所以保存的文件夹也是在docker应用内,但是由于文件比较多,而docker部署的文件夹空间有限,所以需要将文件保存到docker外的文件夹内。

于是将保存路径改为绝对路径,但是发布运行发现找不到文件夹,但是文件是成功保存到服务器上了,通过find命令查找文件夹,命令如下:

find / -name "FileBucket" 

-name是指定按文件名查找,”FileBucket"是文件夹名称

找到如下内容:

find: ‘/proc/22841’: 没有那个文件或目录
find: ‘/proc/22849’: 没有那个文件或目录
find: ‘/proc/22856’: 没有那个文件或目录
find: ‘/proc/22858’: 没有那个文件或目录
/var/lib/docker/overlay2/8ee6db6db05756d9884c8fd80574cc48400243c64a5fa57dbdcd896251edcbc1/diff/FileBucket
/var/lib/docker/overlay2/8ee6db6db05756d9884c8fd80574cc48400243c64a5fa57dbdcd896251edcbc1/merged/FileBucket
/FileBucket

在/var/lib/docker/overlay2/8ee6db6db05756d9884c8fd80574cc48400243c64a5fa57dbdcd896251edcbc1/diff/FileBucket文件夹中找到了上传的文件,文件还在保存在docker环境下面了,没有达到我要保存到docker环境外的目的。

于是百度了一下,找到了一个方式,就是在发布docker的时候将要保存的文件夹外挂到docker上面,命令如下:     

docker run -d -p 8030:80 --name aveplugins_1 --restart=always -e TZ=Asia/Shanghai -d -v /home/AvePlugins1/back:/app -v /FileStorage:/app/FileStorage aveplugins:1.0  

其中-v 是指定外挂的文件夹,-v 后面是要外挂的文件夹  :后面的docker内使用的文件夹 -name 是指定docker容器名称

发布后,将文件保存的位置配置为/FileStorage/即可。

posted on 2024-03-06 15:16  IT之家  阅读(125)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3