Как установить права доступа к файлам laravel внутри образа докера

У меня есть следующий файл докеров для создания моего веб-приложения Laravel. После запуска я получаю ошибки разрешения при попытке доступа к каталогам vendor и storage. Мой вопрос в том, как правильно установить разрешения для Laravel для базового образа php: 7.2-fpm. Я получаю следующее сообщение об ошибке:

fopen (/var/www/app/vendor/dompdf/dompdf/lib/fonts/glyphicons-halflings-normal_4ced20531a4f462a8c5c535d4debd2eb.ufm): не удалось открыть поток: в доступе отказано

Dockerfile

FROM php:7.2-fpm

WORKDIR /var/www/app

RUN apt-get update && apt-get install -y \
    build-essential \
    libpng-dev \
    libjpeg62-turbo-dev \
    libfreetype6-dev \
    locales \
    zip \
    jpegoptim optipng pngquant gifsicle \
    vim \
    unzip \
    git \
    curl \
    npm

RUN curl -sL https://deb.nodesource.com/setup_9.x | bash
RUN apt-get install -y nodejs 

# Clear cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Install extensions
RUN docker-php-ext-install pdo_mysql mbstring zip exif pcntl
RUN docker-php-ext-configure gd --with-gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-png-dir=/usr/include/
RUN docker-php-ext-install gd
RUN docker-php-ext-install bcmath

# Install composer
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

# Copy existing application directory contents

COPY . /var/www/app

RUN chmod -R 775 /var/www/app
RUN chmod -R 775 /var/www/app/vendor
RUN chmod -R 777 /var/www/app/storage

# COPY --from=nodeBuild ./ /var/www
RUN composer install
RUN npm install
RUN npm update

# Expose port 9000 and start php-fpm server
EXPOSE 9000
CMD ["php-fpm"]

person Rutnet    schedule 28.09.2020    source источник
comment
Как вы запускаете образ? Какую именно ошибку вы получаете?   -  person David Maze    schedule 28.09.2020
comment
Только что обновился с сообщением об ошибке. Я должен добавить, если я дам каталогу поставщика 777 разрешений, он работает нормально. Но должен быть "правильный" способ сделать это   -  person Rutnet    schedule 28.09.2020


Ответы (1)


Я удалил эти команды:

RUN chmod -R 775 /var/www/app
RUN chmod -R 775 /var/www/app/vendor
RUN chmod -R 777 /var/www/app/storage

Я заставил веб-сервер рекурсивно владеть каталогом:

chown -R www-data:www-data /var/www

Это решило проблему

person Rutnet    schedule 29.09.2020