docker-compose 開發環境,如何建立 storage 的 symbolic link?
前言
團隊使用 docker-compose
建立開發環境,方便前端工程師在不安裝 PHP 及 MySQL 的情況下也可以進行基於 Laravel framework 的專案開發。
但問題剛好發生在使用 Laravel File Storage 存放的圖片檔,無法通過 Browser 瀏覽。查到的原因是 storage
這個 symbolic link 的指向錯誤了。
目前找到的解法是手動進入到 docker 的 nginx container 後再建立。而不是直接使用 $ php artisan storage:link
操作步驟
移除工作目錄下的
public/storage
這個 symbolic link找到 docker 的 nginx 容器 CONTAINER ID
1
2
3$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
baba480659ee nginx:latest "nginx -g 'daemon ..." 16 minutes ago Up 16 minutes 0.0.0.0:80->80/tcp hpclaravelpaganinipluscom_web_1進入 docker 的 nginx 容器
1
$ sudo docker exec -ti {CONTAINER ID} bash
在 docker 的 nginx 容器執行 symbolic link 的建立
1
$ ln -s /code/storage/app/public /code/public/storage
檢查建立的結果是否正確
1
2
3
4
5
6
7
8
9
10
11
12$ ls -l
drwxr-xr-x 13 root root 442 Nov 7 06:28 assets
drwxr-xr-x 24 root root 816 Oct 26 04:08 css
-rw-r--r-- 1 root root 5430 Oct 26 04:08 favicon.ico
drwxr-xr-x 13 root root 442 Nov 7 04:49 images
-rw-r--r-- 1 root root 1823 Sep 19 04:07 index.php
drwxr-xr-x 6 root root 204 Oct 26 04:08 js
-rw-r--r-- 1 root root 24 Sep 19 04:07 robots.txt
lrwxrwxrwx 1 root root 24 Nov 7 06:31 storage -> /code/storage/app/public
drwxr-xr-x 10 root root 340 Oct 26 04:08 vendor
-rw-r--r-- 1 root root 914 Sep 19 04:07 web.config
drwxr-xr-x 5 root root 170 Nov 7 01:32 yamlBrowser 開啟圖片網站,例如
1
http://localhost/storage/4BWGjwW0p6iENjseaHZphhorGBUJTPkd888oiMNh.jpeg