我正在嘗試對我的 laravel 網站進行 dockerise。我在Windows 10而且 docker 工具箱對我來說運作得不好(相對路徑安裝得不好)。
因此,我決定設定一個 Virtualbox Ubuntu 16.x 伺服器並在虛擬機器內安裝 docker CE。然後我將C:\Projects
Windows 主機上的檔案作為共享資料夾新增到我的 Ubuntu VM 中。然後在我的虛擬機器中,我安裝了 Guest Additions,以便共用資料夾將出現在我的虛擬機器中的/media/sf_Projects/
最後,我使用此命令將我的非root帳戶新增至latheesan
:並建立了一個符號連結到(以便於存取)。vboxsf
sudo adduser latheesan vboxsf
/media/sf_Project
/home/latheesan/Projects
重新啟動 Ubuntu VM 後,我可以以 latheesan 使用者身分存取共用資料夾內容。
因此,我將主機上的項目克隆到:C:\Projects\mysite.io
dir.
然後我透過 ssh 進入我的 Ubuntu virtualbox VM(運行 Docker CE)並執行我的docker-compose build && docker-compose up -d
命令。一切正常,容器也升了起來。當我訪問在 docker 容器中運行的網站時,我從 apache 收到此錯誤:
禁止存取 您無權存取此伺服器上的 / 。
因此,我在容器中啟動了一個互動式 shell,看起來網站目錄是安裝為 root,而不是 www-data。也許這就是錯誤的原因。
這是我在主機和容器上操作的所有日誌:https://pastebin.com/raw/M7Jq0CgP
這是我的設定:
docker-compose.yml https://pastebin.com/raw/V16ctwuj
docker-compose/site/Dockerfile https://pastebin.com/raw/pWhf8uzH
docker-compose/site/vhost.conf https://pastebin.com/raw/wgZ68e9E
docker-compose/site/php.ini https://pastebin.com/raw/neSiaAqw
有什麼想法為什麼卷沒有安裝為www-data
?或是使用 Windows 主機 + 虛擬機器 vm + docker ce 是不可能的嗎?
答案1
[...] 使用預設安裝選項,所有檔案均為 root 所有。這可以透過添加一些安裝選項來更改。選項透過 -o 參數傳遞。您可以對一個參數使用多個選項,並用逗號分隔值。有關可以使用哪些選項的更多信息,請參閱 mount 的手冊頁。使用者手冊也註明了與共用資料夾相容的選項。若要掛載 SF 以便您成為檔案的擁有者,請使用下列命令:
sudo mount -t vboxsf -o rw,uid=1000,gid=1000 share ~/host