我正在为Laravel应用程序设置Docker,该应用程序是一个内部CDN,其中包含大量图像和其他静态文件,./storage/app
,包括private
和public
。我希望使用 GitLab CI 构建 Docker 映像,我的问题是在不覆盖存储内容的情况下构建它的正确方法是什么?存储库中不存在这些内容。
我对此有两个想法:
-
创建从
/var/www/html
到项目./storage/app/public
的符号链接,以及从/some_other_folder
到项目./storage/app/private
的符号链接。在这种情况下,问题是我可以将文件写入文件夹的软链接吗,如果可以,该文件真的会出现在符号链接的原始文件夹中吗?如果所有这些都适用,我也有兴趣是否真的可以创建一个指向 Docker 容器内文件夹的符号链接...... -
将 Laravel 存储设置为在外部写入文件,而不是文件夹中的文件夹。在这种情况下,问题是我应该如何配置 Laravel和Docker以允许将文件写入容器外部,并将它们放在容器之外 直接进入公共
/var/www/html
和私人/some_other_folder
?
这两种想法是否正确/良好/甚至可以实现?还是有其他解决问题的方法?
我知道这个问题到目前为止不是最新的,但是因为我遇到了同样的问题,并且自己做了相当多的研究,直到我有一个想法:
我已经使用两个绑定挂载启动了 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/
试试这个:
docker exec -it my_container bash -c "cd public && ln -s ../storage/app/public storage"