7

我正在为一个 Laravel 应用程序设置 Docker,该应用程序是一个内部 CDN,其中包含大量图像和其他./storage/app静态private文件public。我希望使用 GitLab CI 构建 Docker 映像,我的问题是在不覆盖存储内容的情况下构建它的正确方法是什么?这些内容不存在于 repo 中。

对此我有两个想法:

  • 创建从/var/www/html到项目的符号链接./storage/app/public /some_other_folder从到项目的符号链接./storage/app/private。在这种情况下,问题是我可以将文件写入文件夹的软链接吗?如果可以,该文件真的会出现在符号链接的原始文件夹中吗?如果所有这些都适用,我也很感兴趣,如果我真的可以创建一个符号链接到 Docker 容器内的文件夹......

  • 设置 Laravel Storage 以在外部写入文件,而不是文件夹内的文件夹。在这种情况下,问题是我应该如何配置 LaravelDocker 以允许将文件写入容器外部,将它们/var/www/html直接放入publicprivate/some_other_folder

任何一个想法是正确的/好的/甚至可以实现的吗?或者有没有其他解决问题的方法?

4

2 回答 2

9

我知道这个问题到目前为止还不是最新的,但是因为我遇到了同样的问题并且自己做了一些研究,直到我有了一个想法:

我已经使用两个绑定挂载启动了 php 容器,它们的工作方式类似于 artisan 创建的链接:

version: '3.7'

services:
  laravel:
    image: php
      volumes:
        - type: bind
          source: /path/to/laravel/project/
          target: /var/www/html/
        - type: bind
          source: /path/to/laravel/project/storage/app/public/
          target: /var/www/html/public/storage/
于 2019-05-02T13:35:42.723 回答
0

尝试这个:

docker exec -it my_container bash -c "cd public && ln -s ../storage/app/public storage"
于 2021-04-20T20:15:30.030 回答