建立於: 7年前 ( 更新: 7年前 )
前言
CCC網站升級php 7.2.0囉,有Docker的環境,輕鬆搞定php升級,
在Linux上Image的變更還是有些注意事項您應該了解。
如果您跟我一樣透過docker將D-Laravel安裝於Linux的系統上,當您變更不同的image時,
或許您可能會碰到,疑!怎麼composer沒有權限寫入資料夾的錯誤。
directory is not writable
在Linux上Image的變更還是有些注意事項您應該了解。
如果您跟我一樣透過docker將D-Laravel安裝於Linux的系統上,當您變更不同的image時,
或許您可能會碰到,疑!怎麼composer沒有權限寫入資料夾的錯誤。
directory is not writable
說明
在Linux的環境上,D-Laravel內建image的使用者並非root,預設的uid及gid為1000,
他極有可能與您Linux上所執行的使用者uid及gid是不同,您可以輸入id查看。
如果您Linux上的使用者uid及gid剛好為1000,那基本上執行D-Laravel不會有任何問題。

但是當您的情況與我相同時,uid及gid並非1000,這會造成您Linux上使用者執行composer時,
無權限寫入dlaravel家目錄的情況,當您輸入composer update時,
會看見如下的錯誤: OK,這是正常現象,不要太警張。

修正的方式非常簡單,說穿了就是變更dlaravel的uid及gid與您執行的Linux使用者的uid及gid相同即可。
如果您對Linux指令或Docker不熟,又或者您對Linux指令相當熟悉,只不過懶的調整。
D-Laravel開發目標,就是要讓不懂Docker或懂Docker的人,可以使用最簡單的方式搞定環境,
當然D-Laravel,已提供轉換的bash囉。
他極有可能與您Linux上所執行的使用者uid及gid是不同,您可以輸入id查看。
如果您Linux上的使用者uid及gid剛好為1000,那基本上執行D-Laravel不會有任何問題。

但是當您的情況與我相同時,uid及gid並非1000,這會造成您Linux上使用者執行composer時,
無權限寫入dlaravel家目錄的情況,當您輸入composer update時,
會看見如下的錯誤: OK,這是正常現象,不要太警張。

修正的方式非常簡單,說穿了就是變更dlaravel的uid及gid與您執行的Linux使用者的uid及gid相同即可。
如果您對Linux指令或Docker不熟,又或者您對Linux指令相當熟悉,只不過懶的調整。
D-Laravel開發目標,就是要讓不懂Docker或懂Docker的人,可以使用最簡單的方式搞定環境,
當然D-Laravel,已提供轉換的bash囉。
D-Laravel的修正方式:
我們可以使用D-Laravel提供的
這裡我採用了一種非常粗暴而直接的方式,就是直接砍掉container內的dlaravel使用者,
然後再依執行
建立相同的dlaravel使用者在container內,然後變更dlaravel家目錄的權限。
夠粗暴吧,不過這確實有效的。

最新版的D-Laravel已不使用這種粗暴的方式變更使用者的uid及gid了,有更好的方式。
https://www.ccc.tc/article/dlaravel-release-v1.5.5
當我們透過
我們需要將變更,寫入資料寫到所使用的deivny/fpm的image中,
由於呢docker-compose環境,執行down時,container會被移除,
所以我們必需將container的變更存入image的樣版,
這樣下次啟動產生對執行container才會是我們變更過的環境。
在這例子中,我使用的為php 7.2.0版,所以找出fpm的CONTAINER ID。

然後進行commit及重啟。

完成後,進入container內,再來跑看看
您可以看見,變更權限後可以正常更新囉,composer不會再抱怨沒權寫入加目錄了。

如果您對於D-Laravel使用上有什麼疑問,歡迎到聊天室留言哦。
./console chowner
方式,輕鬆調整。./console chowner
是怎麼辨到的呢,然後再依執行
./console chowner
的使用者id及gid,建立相同的dlaravel使用者在container內,然後變更dlaravel家目錄的權限。
夠粗暴吧,不過這確實有效的。

最新版的D-Laravel已不使用這種粗暴的方式變更使用者的uid及gid了,有更好的方式。
https://www.ccc.tc/article/dlaravel-release-v1.5.5
當我們透過
./console chowner
重建了container內的dlaravel使用者後,我們需要將變更,寫入資料寫到所使用的deivny/fpm的image中,
由於呢docker-compose環境,執行down時,container會被移除,
所以我們必需將container的變更存入image的樣版,
這樣下次啟動產生對執行container才會是我們變更過的環境。
在這例子中,我使用的為php 7.2.0版,所以找出fpm的CONTAINER ID。

然後進行commit及重啟。

完成後,進入container內,再來跑看看
composer update
。您可以看見,變更權限後可以正常更新囉,composer不會再抱怨沒權寫入加目錄了。

如果您對於D-Laravel使用上有什麼疑問,歡迎到聊天室留言哦。
No Comment
Post your comment