【发布时间】: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 用户下创建该目录。祝你好运