【问题标题】:How to access another docker volume files with Vue & Laravel?如何使用 Vue 和 Laravel 访问另一个 docker 卷文件?
【发布时间】:2021-01-15 20:54:59
【问题描述】:

我正在 docker 上运行一个 Vue & Laravel 项目。

Project structure and everything about the setup

首先,我正在尝试在服务器上上传图片。
如果我在没有 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);
    }

【问题讨论】:

  • 你能分享你的 docker-compose.yml 文件吗?你为什么要在 vue 项目中上传一些文件?乍一看似乎错误是试图访问 laravel 项目中不存在的frontend 路径...
  • 请避免添加代码截图。试图帮助您的人必须输入此代码才能对其进行测试。相反,请使用代码块并将代码复制粘贴到其中。
  • @ChristosLytras 看,正如我之前提到的,控制器中的代码没有任何问题。我附上它只是为了更好的视野。 “如果我在没有 docker 的情况下运行这个项目,它会按计划运行(文件正在上传到服务器上)。但是,如果我用 docker 运行这个项目,它会抛出一个错误(找不到目录)。”跨度>
  • @mpccolorado 请查看这篇文章:medium.com/@crocodile2u/…。在这里你会找到整个设置
  • @TyomaInagamov 我不是在评判代码,我是说您不应该在此处将代码发布为屏幕截图图像并改用代码块。我建议您阅读How do I ask a good question?,尤其是第三段中的“帮助他人重现问题”“请勿发布代码、数据、错误消息等的图像”并阅读此 Q/A Why not upload images of code/errors when asking a question?

标签: laravel docker vue.js docker-volume


【解决方案1】:

你的路径

$path = '../../'.'frontend'.'/'.'src'.'/'.'assets'.'/'.'img'.'/'.'files'.'/'.$request->file_name;

往上走两步,然后进入frontend 目录。但是您的backend 容器中没有这样的目录。

backend:
  volumes:
    - ./backend:/app
    - ./etc/php:/usr/local/etc/php/local.conf.d/

最后两行将bakendetc/php 挂载在后端容器内。如您所见,没有前端,因此您在主机上使用的路径将不起作用。再添加一行来修复它:

backend:
  volumes:
    - ./backend:/app
    - ./etc/php:/usr/local/etc/php/local.conf.d/
    - ./frontend:/frontend  # this line

这将使前端目录出现在/frontend,这应该足以修复它。

【讨论】:

  • 非常感谢您!天知道我花了多少时间试图解决这个问题。我希望你做得很好,如果我能以任何方式帮助你,我会的。再次感谢
猜你喜欢
  • 1970-01-01
  • 2019-11-25
  • 2017-04-11
  • 2020-12-24
  • 1970-01-01
  • 1970-01-01
  • 2015-09-15
  • 2021-04-03
  • 1970-01-01
相关资源
最近更新 更多