Gemäß der Docker-Compose- und Docker-Run-Referenz ist der user
Die Option legt die Benutzer-ID (und Gruppen-ID) des Prozesses fest, der im Container ausgeführt wird. Wenn Sie dies auf 1000:1000
setzen , Ihr Webserver kann sich nicht mehr an Port 80 binden. Für die Bindung an einen Port unter 1024 sind Root-Berechtigungen erforderlich. Das bedeutet, dass Sie den hinzugefügten user: 1000:1000
entfernen sollten Anweisung erneut.
Um das Berechtigungsproblem mit dem freigegebenen Volume zu lösen, müssen Sie den Eigentümer des Verzeichnisses ändern. Führen Sie chown 1000:1000 /path/to/volume
aus . Dies kann innerhalb des Containers oder direkt auf dem Hostsystem ausgeführt werden. Die Änderung ist dauerhaft und sofort wirksam (kein Neustart des Containers erforderlich).
Im Allgemeinen denke ich, dass sich das Volume in einem Unterverzeichnis befinden sollte, z. B.
volumes:
- ./public:/var/www/html
Stellen Sie sicher, dass ./public
dem richtigen Benutzer gehört . Wenn Sie den Container starten und das Verzeichnis nicht existiert, erstellt Docker es für Sie. In diesem Fall gehört das Verzeichnis root
und Sie müssen den Besitz wie oben beschrieben manuell ändern.
Alternativ können Sie den Webserver auch als unprivilegierter Benutzer ausführen (user: 1000:1000
), lassen Sie den Server auf Port 8080 lauschen und ändern Sie das Routing auf
ports:
- "8080:8080"