Maison  >  Questions et réponses  >  le corps du texte

Exécutez l'installation du compositeur dans Dockerfile

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粉545682500P粉545682500315 Il y a quelques jours494

répondre à tous(1)je répondrai

  • P粉471207302

    P粉4712073022024-01-02 16:30:20

    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

    répondre
    0
  • Annulerrépondre