it-swarm.com.ru

Ошибка отказа в доступе при использовании Laravel и Docker

У меня есть два док-контейнера: Nginx и App.
Контейнер приложения расширяет PHP-fpm, а также содержит мой код Laravel.

В моем docker-compose.yml я делаю:

version: '2'
services:
    nginx:
        build:
            context: ./nginx
            dockerfile: ./Dockerfile
        ports:
            - "80:80"
        links:
            - app
    app:
        build:
            context: ./app
            dockerfile: ./Dockerfile

В моем Nginx Dockerfile я делаю:

FROM nginx:latest
WORKDIR /var/www
ADD ./nginx.conf /etc/nginx/conf.d/default.conf
ADD . /var/www
EXPOSE 80

В моем приложении Dockerfile я делаю:

FROM php:7-fpm
WORKDIR /var/www
RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client && docker-php-ext-install mcrypt pdo_mysql
ADD . /var/www

После успешного запуска docker-compose у меня появляется следующая ошибка при попытке localhost

Поток или файл "/var/www/storage/logs/laravel.log" не может быть открыт: не удалось открыть поток: разрешение отклонено

Насколько я понимаю, папка хранения должна быть доступна для записи веб-сервером.
Что я должен сделать, чтобы решить эту проблему?

5
Anand Naik B

Создайте свой Dockerfile как показано ниже: 

FROM php:7-fpm
WORKDIR /var/www
RUN apt-get update && apt-get install -y libmcrypt-dev mysql-client && docker-php-ext-install mcrypt pdo_mysql
ADD . /var/www
RUN chown -R www-data:www-data /var/www

Это делает каталог /var/www принадлежащим www-data, который является пользователем по умолчанию для php-fpm

Поскольку он скомпилирован с пользователем www-data.

REF- 

https://github.com/docker-library/php/blob/57b41cfc2d1e07acab2e60d59a0cb19d83056fc1/7.0/jessie/fpm/Dockerfile

12
vivekyad4v

Я нашел похожую проблему, и я исправил ее 

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

chmod -R 755 /var/www/storage
5
John Pluto Solutions

Вы можете сделать 3 вещи, как я использовал/используя

  1. Предоставить разрешение 777 для папки storage (Sudo chmod 777 storage/ storage/*)
  2. RUN chown -R www-data:www-data /var/www RUN chmod 755 /var/www

  3. Переместите папку проекта в /home, которая не требует специального разрешения для записи в этот каталог (лично рекомендую это) (в моем случае я использовал /home/projects/ и все они были там размещены). 


Примечание: Если проект находится в /var/www/, то, если вы написали загрузку файла, вам также необходимо разрешение на эти папки. это позволит избежать такой ошибки, когда вы переместили ее в /home

4
Abdulla Nilam

вы можете просто щелкнуть правой кнопкой мыши на папке laravel, выбрать свойства, затем разрешения и в поле «группа» выбрать «докер» и дать необходимые разрешения группе «Докер» :), это работает для меня

0
rogal127