首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Laravel、Nginx和Docker Container,权限被拒绝

Laravel、Nginx和Docker Container,权限被拒绝
EN

Stack Overflow用户
提问于 2018-07-07 20:31:36
回答 3查看 8.7K关注 0票数 3

我已经创建了一个laravel项目,并将其放在docker容器中,看起来一切都加载得很好,但是在某些时候,我收到了一条错误消息:

There is no existing directory at "/Users/john/Documents/work/dashboard/src/storage/logs" and its not buildable: Permission denied

奇怪的是,Laravel试图写入我的本地环境中的文件或目录,而不是我期望的docker容器环境:

/var/www/storage/logs

这是我的docker-compose.yml:

代码语言:javascript
复制
version: '2'
  services:

  # The Web Server
  web:
    build:
      context: ./
      dockerfile: web.signup.dockerfile
    working_dir: /var/www
    volumes:
      - ./src:/var/www
      - /var/www/storage
    env_file: 'src/.env'
    ports:
      - 80:80

volumes:
  dbdata:

这是我的Dockerfile

代码语言:javascript
复制
FROM centos:latest

RUN set -ex \
    && yum install -y epel-release \
    && yum update -y mysql-client libmagickwand-dev \
    && yum install -y libmcrypt-devel \
    && yum install -y python-pip \
    && pip install --upgrade pip \
    && yum install -y zip unzip  \
    && yum install -y java-1.8.0-openjdk \
    && yum clean all

RUN pip install --upgrade --ignore-installed six awscli
RUN yum install -y supervisor
RUN yum install -y php-pear php-devel 
RUN pecl install imagick 

# Add the Ngix
ADD nginx.repo /etc/yum.repos.d/nginx.repo

# Add the Centos PHP dependent repository
RUN rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

RUN yum update -y

# Installing Nginx 
RUN yum -y install nginx

# Installing PHP
RUN yum -y --enablerepo=remi,remi-php72 install php-fpm php-common php-mcrypt php-mbstring

WORKDIR /var/www

ADD vhost.prod.conf /etc/nginx/conf.d/default.conf

COPY src/. /var/www

RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php -r "if (hash_file('SHA384', 'composer-setup.php') === '544e09ee996cdf60ece3804abc52599c22b1f40f4323403c44d44fdfdd586475ca9813a858088ffbc1f233e9b180f061') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \
    && php composer-setup.php \
    && php -r "unlink('composer-setup.php');" \
    && php composer.phar install --no-dev --no-scripts \
    && rm composer.phar

RUN chown -R apache:apache \
    /var/www/storage \
    /var/www/bootstrap/cache

EXPOSE 80
EXPOSE 9000

RUN mkdir -p /run/php-fpm

COPY supervisord.conf /supervisord.conf

CMD ["/usr/bin/supervisord", "-c", "/supervisord.conf"]

有什么想法吗?

EN

回答 3

Stack Overflow用户

发布于 2018-07-08 12:47:32

按照设计的那样工作,

您正在将"src“从当前目录挂载到容器中。

代码语言:javascript
复制
 volumes:
  - ./src:/var/www

如果你想访问容器内的代码,你可以在构建时添加文件。

为了修复你的"bug",

代码语言:javascript
复制
chmod -R 777 /Users/john/Documents/work/dashboard/src/storage/logs

对于本地开发环境来说是可以的。

票数 1
EN

Stack Overflow用户

发布于 2021-05-20 17:18:15

在我看来,无论我们在物理文件夹中更改了什么文件夹权限,结果都是这样的。

删除bootstrap/cache/*中的所有内容解决了这个问题。

票数 0
EN

Stack Overflow用户

发布于 2021-06-15 20:51:44

在我的例子中,当我用完硬盘空间时,我得到了这个错误,我清除了它,这是唯一有帮助的:

代码语言:javascript
复制
rm bootstrap/cache/config.php

php artisan cache:clear

composer dump-autoload
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51223264

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档