Heim > Fragen und Antworten > Hauptteil
Ich versuche, eine PHP-Laravel-Anwendung zu dockerisieren. Um dies zu erreichen, verwende ich PHP und Composer-Bilder. Wenn ich jedoch composer install ausführe, installiere ich alle Pakete, erhalte dann aber diese Fehlermeldung:
/app/vendor不存在,无法创建。
Ich möchte, dass Composer das Verzeichnis /vendor erstellt! Könnte das ein Berechtigungsproblem sein?
Das ist meine Docker-Datei:
FROM php:7.4.3-cli # Install system dependencies RUN apt-get update && apt-get install -y git curl libpng-dev libonig-dev libxml2-dev zip unzip # Clear cache RUN apt-get cl ean && rm -rf /var/lib/apt/lists/* # Install PHP extensions RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd COPY --from=composer:2.4.4 /usr/bin/composer /usr/local/bin/composer # Set working directory WORKDIR /app COPY . . # Add a new user "john" with user id 8877 RUN useradd -u 8877 john # Change to non-root privilege USER john RUN composer install
Ich habe einen Benutzer mit einer beliebigen ID erstellt, weil es eine schlechte Praxis ist, composer install als Root-Sicherheit auszuführen.
P粉4712073022024-01-02 16:30:20
我能够通过对 Dockerfile 进行一些更改来解决该问题:
FROM php:7.4.3-cli # Install system dependencies RUN apt-get update && apt-get install -y \ git \ curl \ libpng-dev \ libonig-dev \ libxml2-dev \ zip \ unzip # Clear cache RUN apt-get clean && rm -rf /var/lib/apt/lists/* # Install PHP extensions RUN docker-php-ext-install pdo_mysql mbstring exif pcntl bcmath gd COPY --from=composer:2.4.4 /usr/bin/composer /usr/local/bin/composer # Add a new user "john" with user id 8877 RUN useradd -u 8877 john # Set working directory WORKDIR /app COPY . . RUN chmod -R 775 /app RUN chown -R john:john /app # Change to non-root privilege USER john RUN composer install --no-scripts --no-plugins