laravel - 如何使用 Vue 和 Laravel 访问另一个 docker 卷文件?
问题描述
我在 docker 上运行一个Vue & Laravel项目。
首先,我目前正在尝试在服务器上上传图像。
如果我在没有 docker 的情况下运行这个项目,它将按计划工作(文件正在上传到服务器并且可以访问)。
但是,如果我用 docker 运行这个项目,它会抛出一个错误(找不到目录)。
重要说明:我猜测它可能会发生,因为我正在处理后端的文件(laravel 控制器,代码在下面)。所以它只能访问后端卷。
它试图在前端卷中找到一个文件,但它无法访问它。
那么,问题来了:如何访问该卷?
文件控制器:
public function uploadFile (Request $request) {
# Processing to base64
$exploded = explode(',', $request->image_data);
$decoded = base64_decode($exploded[1]);
# Configuring the extension
$extension = strtok(explode('/', $exploded[0])[1], ';');
# Defining the path
$path = '../../'.'frontend'.'/'.'src'.'/'.'assets'.'/'.'img'.'/'.'files'.'/'.$request->file_name;
# Uploading file to the storage
file_put_contents($path, $decoded);
}
解决方案
你的路径在这里
$path = '../../'.'frontend'.'/'.'src'.'/'.'assets'.'/'.'img'.'/'.'files'.'/'.$request->file_name;
向上两步,然后进入frontend
目录。backend
但是您的容器中没有这样的目录。
backend:
volumes:
- ./backend:/app
- ./etc/php:/usr/local/etc/php/local.conf.d/
最后两行安装在后端容器内bakend
。etc/php
如您所见,没有前端,因此您在主机上使用的路径将不起作用。再添加一行来修复它:
backend:
volumes:
- ./backend:/app
- ./etc/php:/usr/local/etc/php/local.conf.d/
- ./frontend:/frontend # this line
这将使前端目录出现在/frontend
并且应该足以修复它。
推荐阅读
- vuepress - Vuepress 构建有一些错误
- angular - Angular循环依赖:组件使用service动态创建同类型的组件
- python - 内联类中的 Django admin set fk_name = to_field 只允许上传一张图片
- python - 嵌套for循环python - 重复值
- javascript - 防止在蓝色圆圈svg之外单击
- regex - 仅当内容具有某些单词时,正则表达式才删除括号和内部内容
- android - 在没有 Android Studio 的情况下在 linux 上使用 android ndk 制作可执行文件
- sql - 在 SQL 中,如何从三个变量的列表中选择任意两个组合
- python - 当我尝试运行 .kv 文件时,此错误是什么意思
- python - 如何在不启用 keras 中的 run_eagerly 标志的情况下将张量转换为 numpy 数组