Dockerise 一個 Laravel 應用程式 - 在 apache 伺服器上被拒絕權限

Dockerise 一個 Laravel 應用程式 - 在 apache 伺服器上被拒絕權限

我正在嘗試對我的 laravel 網站進行 dockerise。我在Windows 10而且 docker 工具箱對我來說運作得不好(相對路徑安裝得不好)。

因此,我決定設定一個 Virtualbox Ubuntu 16.x 伺服器並在虛擬機器內安裝 docker CE。然後我將C:\ProjectsWindows 主機上的檔案作為共享資料夾新增到我的 Ubuntu VM 中。然後在我的虛擬機器中,我安裝了 Guest Additions,以便共用資料夾將出現在我的虛擬機器中的/media/sf_Projects/

最後,我使用此命令將我的非root帳戶新增至latheesan:並建立了一個符號連結到(以便於存取)。vboxsfsudo adduser latheesan vboxsf/media/sf_Project/home/latheesan/Projects

重新啟動 Ubuntu VM 後,我可以以 latheesan 使用者身分存取共用資料夾內容。

因此,我將主機上的項目克隆到:C:\Projects\mysite.iodir.

然後我透過 ssh 進入我的 Ubuntu virtualbox VM(運行 Docker CE)並執行我的docker-compose build && docker-compose up -d命令。一切正常,容器也升了起來。當我訪問在 docker 容器中運行的網站時,我從 apache 收到此錯誤:

禁止存取 您無權存取此伺服器上的 / 。

因此,我在容器中啟動了一個互動式 shell,看起來網站目錄是安裝為 root,而不是 www-data。也許這就是錯誤的原因。

這是我在主機和容器上操作的所有日誌:https://pastebin.com/raw/M7Jq0CgP

這是我的設定:

有什麼想法為什麼卷沒有安裝為www-data?或是使用 Windows 主機 + 虛擬機器 vm + docker ce 是不可能的嗎?

答案1

Virtualbox 文檔:

[...] 使用預設安裝選項,所有檔案均為 root 所有。這可以透過添加一些安裝選項來更改。選項透過 -o 參數傳遞。您可以對一個參數使用多個選項,並用逗號分隔值。有關可以使用哪些選項的更多信息,請參閱 mount 的手冊頁。使用者手冊也註明了與共用資料夾相容的選項。若要掛載 SF 以便您成為檔案的擁有者,請使用下列命令:

sudo mount -t vboxsf -o rw,uid=1000,gid=1000 share ~/host

相關內容