Vermeiden Sie die Verweigerung von Berechtigungen, wenn Sie Laravel mit Docker entwickeln

Bei der lokalen Entwicklung von Laravel mit Docker anstelle von Laradock konnte Permission Denied "/ storage / logs" nicht schreiben. Ich werde in diesem Fall eine Problemumgehung hinterlassen.

Wahrscheinlich liegt die Ursache für die verweigerte Berechtigung darin, dass sich die UID und die GID zwischen dem Host und dem Client unterscheiden. Wenn die Konfiguration Nginx> php-fpm von Docker-Compose lautet, können Sie eine beliebige UID und GID für den Nginx-Benutzer "www-data" in der Docker-Datei auf der Seite "php-fpm" angeben (siehe unten). ..

Dockerfile


ARG PUID=1000
ARG PGID=1000

RUN echo "-> $PUID"
RUN echo "-> $PGID"

RUN groupmod -o -g $PGID www-data && \
    usermod -o -u $PUID -g www-data www-data

Fügen Sie die UID und GID Ihres eigenen Mac ein, wenn Sie "Docker-Compose Build" erstellen.

$ docker-compose build --build-arg PUID=$(id -u) --build-arg PGID=$(id -g) app

Die UID und GID von Host und Client sind jetzt identisch.

Bonus

$ (Id -u) konnte nicht korrekt aufgelöst werden, als der obige Befehl in Makefile gesetzt wurde. Es funktioniert gut, wenn Sie wie folgt schreiben

Makefile


build_app:
	$(eval UID := $(shell id -u))
	$(eval GID := $(shell id -g))
	@docker-compose build --build-arg PUID=$(UID) --build-arg PGID=$(GID) app

Recommended Posts

Vermeiden Sie die Verweigerung von Berechtigungen, wenn Sie Laravel mit Docker entwickeln
Bereitstellung mit EC2 / Docker / Laravel
Auf Anforderung wird der Zugriff auf die Ressource beim Push mit Docker verweigert
MalformedInputException, die auch beim Schreiben auftritt
Erstellen Sie mit Laradock eine Docker + Laravel-Umgebung
Aufbau einer Laravel-Entwicklungsumgebung mit Docker (Mac)
Erstellen einer Umgebung für Laravel + MySQL + phpMyadmin mit Docker
Das Bild flog beim Aktualisieren von Docker mit WSL2
Beim Aufrufen der API mit Java tritt eine javax.net.ssl.SSLHandshakeException auf
Zeigen Sie API-Spezifikationen mit Laravel + SwaggerUI + Docker an
[Laravel] Umgang mit Fehlern aufgrund von Speichermangel, wenn Komponisten [Docker] benötigen
[Fehlerbehebung] Tritt auf, wenn versucht wird, mit Docker eine Umgebung für den Frühling zu erstellen