【问题标题】:Dockerfile drupal console access denied mkdirDockerfile drupal 控制台访问被拒绝 mkdir
【发布时间】:2017-03-23 09:30:48
【问题描述】:

我正在尝试在 docker 中安装 drupal 控制台(在 Linux Antergos 下)。我有以下错误:

警告:mkdir():第 49 行 phar:///usr/local/bin/drupal/vendor/drupal/console-core/src/Utils/ConfigurationManager.php 中的权限被拒绝

这是我的 PHP dockerfile:

FROM php:7.0-fpm

RUN usermod -u 1000 www-data

# Set timezone 
RUN rm /etc/localtime 
RUN ln -s /usr/share/zoneinfo/Europe/Bruxelles /etc/localtime 
RUN "date"

RUN apt-get update && apt-get install -y \
    git \
    unzip \
        libfreetype6-dev \
        libjpeg62-turbo-dev \
        libmcrypt-dev \
        libpng12-dev \
        mysql-client \
    && docker-php-ext-install -j$(nproc) iconv mcrypt \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install mysqli pdo pdo_mysql mcrypt zip mbstring opcache json

# Install Xdebug / Redis 
RUN pecl install redis \
    && pecl install xdebug \
    && docker-php-ext-enable redis xdebug

# Set the Drush version. 
ENV DRUSH_VERSION 8.1.2

# Install Drush 8 with the phar file. 
RUN curl -fsSL -o /usr/local/bin/drush "https://github.com/drush-ops/drush/releases/download/$DRUSH_VERSION/drush.phar" && \   
  chmod +x /usr/local/bin/drush

# Download console. 
RUN curl https://drupalconsole.com/installer -L -o drupal.phar

# Install console. 
RUN mv drupal.phar /usr/local/bin/drupal && \
    chmod +x /usr/local/bin/drupal && \
    drupal init --override

# Create drush-backups dir 
RUN mkdir /var/www/drush-backups/

USER 1000 
WORKDIR /var/www/html

【问题讨论】:

  • 你运行/构建的 docker 命令是什么?我刚刚执行了这个 Dockerfile 没有任何问题,所以我唯一能想象的就是一个不可写的卷
  • 我使用以下命令:docker exec -ti CONTAINER_NAME drupal
  • 不确定如何为我提供帮助,一切正常。您可以尝试执行 docker exec -i -t {{CONTAINER}} /bin/bash ,然后从容器内运行 drupal 以查看是否有任何不同。并且也许检查 drupal 控制台 ls -la /usr/local/bin/drupal 的权限应该是 -rwxr-xr-x 1 root root 711671 Mar 23 13:19 /usr/local/bin/drupal
  • 我有同样的权利 :S -rwxr-xr-x 1 root root 711671 Mar 24 08:18 /usr/local/bin/drupal 我继续调查。在容器里面,我也有同样的问题
  • 我现在唯一能想到的就是用“id -u -n”(在 docker 机器中)检查你是什么用户,你应该是 www-data。并将您的 /var/www 数据设置为该用户“chown -R www-data:www-data /var/www”。你得到的错误是因为控制台试图在你的主目录中创建一个 .console 目录,当我运行它时它似乎是 /var/www 它在 www-data:www-data 用户下创建该目录。祝你好运

标签: docker drupal console


【解决方案1】:

为了解决这个问题,我不得不通过 composer 安装 Drupal Console。当然还有另一种解决方案,但它是可行的。

【讨论】: