linux下docker环境的文件存储问题

1. 运行环境

云服务器centos7.6下安装的docker环境

1). 当前使用的 Laravel 版本?

8.5+

2). 当前使用的 php/php-fpm 版本?

PHP 版本:7.4

2. 问题描述?

excel文件下载

我有在容器里面执行 php artisan storage:link ,查看了软链也是生成了的.然后执行代码访问url地址是404,我以为没生成文件,连接服务器进容器看文件确实存在了,宿主机也映射有。我用 FTP 下载下来也能正常打开。后来试了下删除 /public/storage 。用 ln 命令去容器里执行生成了相对路径的软链还是不行。执行代码文件能正常生成,就是访问地址404。

(我在本地环境用这种相对路径是可以正常访问到资源的,我的本地环境是windows系统下搭建的VMware虚拟机,虚拟机装的dcoker,跟线上云服务器是用的同样的镜像环境)

补充:
我用ftp上传了一张图片
访问地址:test-l.otmtrip.cn/storage/16505914...
服务器容器文件路径:
linux下docker环境的文件存储问题

3. 您期望得到的结果?

能正常访问到资源

4. 您实际得到的结果?

访问404

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 20

都是默认配置

touch storage/app/public/a.txt
curl http://laravel.p/storage/a.txt

ll public/storage # 容器内
public/storage -> /www/laravel/storage/app/public
ll public/storage # 宿主机
public/storage -> /home/pff/git/laravel/storage/app/public
# 2 个软连接映射的路径不同,是这里导致的问题

容器内执行 php artisan storage:link,可以正常访问

宿主机执行 php artisan storage:link ,显示 404

彻底解决也就简单了,容器中的工作目录和本地的工作目录相同,就不会存在这个问题了。

PS: 刚想到的可能性, 文件夹 storage/app/public 中的数据不会保存,容器删除后,数据很会丢失(未验证)

1年前 评论
把代码写成诗 1年前
lvgang (楼主) 1年前
把代码写成诗 1年前
lvgang (楼主) 1年前
lvgang (楼主) 1年前
把代码写成诗 1年前
kis龍 (作者) 1年前
kis龍 (作者) 1年前
把代码写成诗 1年前
把代码写成诗 1年前
kis龍 (作者) 1年前
把代码写成诗 1年前
lvgang (楼主) 1年前
lvgang (楼主) 1年前
陈先生

有没有一种可能啊,我是说可能,docker 内的文件系统和路径都是自己的。。。为什么要在宿主机执行 link 的操作?

1年前 评论
lvgang (楼主) 1年前

url 发出来看看,还有目录结构

1年前 评论
lvgang (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!