Ich versuche, meine Laravel-Site zu dockerisieren. Ich bin aufWindows 10und die Docker-Toolbox funktioniert bei mir nicht ganz gut (der relative Pfad lässt sich nicht richtig mounten).
Also habe ich beschlossen, einen Virtualbox Ubuntu 16.x-Server einzurichten und Docker CE in der VM zu installieren. Dann habe ich meinen C:\Projects
auf meinem Windows-Host-Rechner als freigegebenen Ordner zu meiner Ubuntu-VM hinzugefügt. Dann habe ich innerhalb meiner VM die Guest Additions installiert, so dass der freigegebene Ordner in meiner VM unter/media/sf_Projects/
Zuletzt habe ich latheesan
mit vboxsf
diesem Befehl mein Nicht-Root-Konto hinzugefügt: sudo adduser latheesan vboxsf
und einen symbolischen Link zu erstellt /media/sf_Project
( /home/latheesan/Projects
für einfachen Zugriff).
Nach dem Neustart der Ubuntu-VM konnte ich als Benutzer „latheesan“ auf den Inhalt des freigegebenen Ordners zugreifen.
Also habe ich mein Projekt auf meinem Hostcomputer in C:\Projects\mysite.io
folgendes Verzeichnis geklont.
Dann habe ich mich per SSH mit meiner Ubuntu-Virtualbox-VM (auf der Docker CE läuft) verbunden und meinen docker-compose build && docker-compose up -d
Befehl ausgeführt. Alles hat funktioniert und die Container waren aktiv. Als ich meine Site besuchte, die im Docker-Container läuft, erhielt ich diesen Fehler von Apache:
Verboten. Sie haben keine Berechtigung, auf diesen Server zuzugreifen.
Ich habe also eine interaktive Shell in meinem Container gestartet und es sieht so aus, als ob das Site-Verzeichnis als Root gemountet ist, nicht als www-data. Vielleicht liegt deshalb der Fehler.
Hier sind alle Protokolle meines Vorgangs auf meinem Hostcomputer und Container:https://pastebin.com/raw/M7Jq0CgP
Das ist mein Setup:
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
Irgendwelche Ideen, warum das Volume nicht als gemountet wird www-data
? Oder ist dies mit einem Windows-Hostcomputer + Virtual Box VM + Docker CE nicht möglich?
Antwort1
[...] werden die Standard-Mount-Optionen verwendet und alle Dateien gehören root. Dies kann durch Hinzufügen einiger Mount-Optionen geändert werden. Optionen werden mit dem Parameter -o übergeben. Sie können mehrere Optionen mit einem Parameter verwenden, trennen Sie die Werte durch Kommas. Weitere Informationen zu den verwendbaren Optionen finden Sie auf der Manpage von mount. Im Benutzerhandbuch werden auch die mit den freigegebenen Ordnern kompatiblen Optionen aufgeführt. Um den SF so zu mounten, dass Sie der Eigentümer der Dateien sind, verwenden Sie diesen Befehl:
sudo mount -t vboxsf -o rw,uid=1000,gid=1000 share ~/host