by Devin Yang

建立於: 6年前 ( 更新: 6年前 )

關於D-Laravel的Chowner

本文說明在D-Laravel中chowner的功能。
如果您是Linux的使用者,可能需進行這個動作。

為何要Chowner

我們先這麼理解,雖然是容器,但在Linux系統中Docker的container,所使用的uid會是您的host端使用的uid是相同權限(共用同一個Kernel)。
當您host端的uid為500時 ,去啟動了D-Laravel的container,fpm的Container中的dlaravel(預設1000)是無權寫入檔案到您的目錄的。
所以啦,Laravel的網頁就會噴一堆錯誤給您囉,因為fpm中的dlaravel無法寫入檔案到storage的目錄內。

解法有三

一、最簡單的方式,我們直接在Host端的Linux系統,建立一個uid及gid為1000使用者,用來執行D-Laravel。
二、我們透過chowner,將D-Laravel的FPM中container的userid變更為自己所使用的uid,例如: 500。
三、自己重新Build一個FPM的image,並且設定uid為自己host端的使用者。

D-Laravel chowner操作流程

(OSX使用者不需進行,因為OSX使用的為虛擬環境Hyperkit運作的)
1. ./console up 
啟動container

2. ./console chowner
調整container內的uid與您的uid相同。

3. docker ps|grep deviny/fpm
找出dlaravel使用的fpm,我們需要把變更的container,commit為新的image。


4. docker commit 04496a60f0e7 myfpm724
上方的image名稱可以自己取,或者我們直接覆寫使用的image。
docker commit 04496a60f0e7 deviny/fpm:7.2.4
您需要調整docker-compose.yml中php服務所使用的image名稱,如果自已取了新的名稱。

5.在D-Laravel的目錄中執行,cd etc/php-fpm.d
進入fpm設定檔目錄。

6. cp www.conf.sample www.conf 
將sample檔,拷貝為www.conf,並修改裡面的uid為您相同的使用者
user = 500
group = 500
如何得知,自己執行的uid及gid呢,可以在終端機中輸入id即可得知。

7. ./console restart
重啟container

8. ./console
進入fpm的container。

9. id
確認重啟後,container內,使用我們所設定的新uid,非1000。
 

Tags: dlaravel

Devin Yang

文章內容無法一一說明,如果您有什麼不了解處,歡迎提問哦:)

No Comment

Post your comment

需要登入才可留言!

類似的文章


docker,dlaravel

D-Laravel 1.5.5變更說明

D-Laravel的fpm image在php 7.2.1以前是使用docker php官方的dockerfile重build的, 並且所以我可以指定了fpm的預設的owner是dlaravel,   --with-fpm-user=USER    Set the user for php-fpm to run as. (default: nobody)   --with-fpm-group=GRP    Set the group for php-fpm to run as.

dlaravel

D-Laravel的sublime外掛以可由Package Control安裝囉。

Mac或Linux的使用者,現在可由Sublime3的package control進行D-Laravel alias的套件安裝囉。 透過D-Laravel alias,我們可以使用更輕鬆的方式,執行容器內的artisan及composer指令。 docker的環境,要用composer安裝套件嗎,不需再進入container內,或是設定composer的ce別名,即可在sublime中直接執行。

dlaravel

如何透過getssl自動檢測及更新let's encrypt發出的憑證

let's encrypt提供免費的憑證真的很棒,不過,三個月要更新一次憑證是不是有點麻煩, 本文介紹,如何透過getssl,產生多域名的SAN憑證設定,放入排程自動進行憑證更新。 非常簡單哦,六個步驟即可搞定。