2017-11-21 9 views
0

Ich stelle eine Laravel-Anwendung für eine Elastic Beanstalk-Konfiguration mit mehreren Containern bereit. Der Anwendungscode wird in eine Zip-Datei gepackt und als Teil der Bereitstellung hochgeladen und dann in den PHP-FPM Docker-Container eingebunden. Die Container werden ordnungsgemäß ausgeführt, und der Code wird gemountet. Alle bereitgestellten Verzeichnisse gehören jedoch root und daher kann die Anwendung nicht in diese Verzeichnisse schreiben (erforderlich für Protokolldateien, Framework-Dateien usw.). Ich brauche sie durch www-dataAWS Elastic Beanstalk Ändern von Berechtigungen für ein eingehängtes Verzeichnis

besessen werden, wenn ich manuell SSH auf dem die EC2-Instanz, dann docker exec -it container_id bash laufen und laufen ls -la ich sehen kann alle Dateien/Verzeichnisse root gehören. Wenn ich chown -R www-data: storage vendor ausführen, funktioniert die Anwendung wie erwartet.

Daher muss ich einen Weg finden, um die Berechtigungen für die gemounteten Verzeichnisse innerhalb der php-fpm Container zu ändern.

Ich habe in .ebextensions/permissions.config

container_commands: 
    01_change_storage_permissions: 
    # Get the php fpm container ID and change permissions on the mounted directories 
    command: sudo docker exec $(sudo docker ps -aqf "name=php-fpm") chown -R www-data:www-data storage vendor bootstrap 

Der Einsatz des folgenden Befehls versucht, erfolgreich ist, so kann ich den Befehl erfolgreich ausgeführt nehmen, aber es scheint leider nicht die Berechtigungen wie beim Einloggen in den Behälter zu ändern, die Verzeichnisse sind immer noch im Besitz von root

Antwort

1

Sie können chown die Verzeichnisse vor der Montage, wie beschrieben here. Ein kurzer Überblick:

Wenn Sie die Dockerfile steuern, führen Sie HOST_UID=$(id -u) und HOST_GID=$(id -g) und eine Dockerfile erzeugen, die $HOST_GID und $HOST_UID in die folgenden zwei Befehle erweitert:

RUN groupadd -g $HOST_GID mygroup 
RUN useradd -l -u $HOST_UID -g mygroup myuser 

Verwenden Sie den erzeugten Dockerfile mit der ID des ausgefüllten , um dein Bild zu erstellen.

Wenn Sie die Dockerfile nicht steuern, here’s a container pattern for assigning the userid/groupid at runtime in a way that’s easily portable.

Verwandte Themen