Exécutez l'installation du compositeur dans Dockerfile
P粉545682500
P粉545682500 2024-01-01 18:54:53
0
1
492

J'essaie de dockeriser une application PHP Laravel. J'utilise PHP et composer des images pour y parvenir. Cependant, lorsque j'exécute composer install, j'installe tous les packages mais j'obtiens ensuite cette erreur :

/app/vendor不存在,无法创建。

Je veux que Composer crée le répertoire /vendor ! Cela pourrait-il être un problème d'autorisations ?

Voici mon 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 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

J'ai créé un utilisateur avec un identifiant arbitraire car exécuter composer install en tant que sécurité root est une mauvaise pratique.

P粉545682500
P粉545682500

répondre à tous(1)
P粉471207302

J'ai pu résoudre le problème en apportant quelques modifications au 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
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!