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...
服务器容器文件路径:
3. 您期望得到的结果?
能正常访问到资源
4. 您实际得到的结果?
访问404
都是默认配置
容器内执行 php artisan storage:link,可以正常访问
宿主机执行 php artisan storage:link ,显示 404
彻底解决也就简单了,容器中的工作目录和本地的工作目录相同,就不会存在这个问题了。
PS: 刚想到的可能性, 文件夹
storage/app/public
中的数据不会保存,容器删除后,数据很会丢失(未验证)有没有一种可能啊,我是说可能,docker 内的文件系统和路径都是自己的。。。为什么要在宿主机执行 link 的操作?
url 发出来看看,还有目录结构