简体   繁体   中英

running composer install in Dockerfile

I am trying to dockerize a PHP laravel app. I am using a PHP and a composer image to achieve this. However, when I run composer install , I get all my packages installed but then run into this error:

/app/vendor does not exist and could not be created.

I want composer to create the /vendor directory? Could this be a permission issue?

Here is my 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

# 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

I created a user with an arbitrary ID since it's a bad practice to run composer install as root security-wise.

I was able to solve the problem by making some changes to my 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM