Докер не уважает разрешения внутри контейнера, почему? - PullRequest
0 голосов
/ 04 ноября 2019

Об этом можно было спросить раньше или даже обсудить, но я не могу найти ничего, что могло бы помочь мне в этом. Я использую Docker version 19.03.4, build 9013bf5 и docker-compose version 1.25.0-rc4, build 8f3c9c58 как в Windows, так и в обеих версиях Edge. Мой проект Dockerfile выглядит следующим образом:

FROM php:7.2-apache
RUN apt-get update && apt-get install -y \
        zlib1g-dev \
        git \
        unzip \
    && rm -rf /var/lib/apt/lists/ \
    && docker-php-ext-install zip pdo_mysql \
    && a2enmod rewrite \
    && pecl install xdebug-2.7.2 && docker-php-ext-enable xdebug \
    && mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" \
    && mv /var/www/html /var/www/localproj \
    && chown -R www-data:www-data /var/www/ \
    && ln -s /usr/local/bin/php /usr/bin/php
COPY --from=composer:1.9 /usr/bin/composer /usr/bin/composer
COPY docker/apache/bootstrap.sh /usr/local/bin/docker-app-entrypoint
WORKDIR /var/www/localproj
ENTRYPOINT ["docker-app-entrypoint"]
CMD ["apache2-foreground"]

И файл bootstrap.sh выглядит так:

#!/bin/bash
set -e

>&2 echo "Running composer install"
php -dxdebug.remote_enable=0 /usr/bin/composer install -n
>&2 echo "Composer install complete."

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

exec docker-php-entrypoint "$@"

Каждый раз, когда я запускаю контейнер, я получаю следующую ошибку:

localproj        | Script php bin/console cache:clear returned with error code 1
localproj        | !!  [04-Nov-2019 16:27:26 UTC] PHP Warning:  file_put_contents(/var/www/localproj/var/cache/local/annotations.map): failed to open stream: No such file or directory in /var/www/localproj/vendor/symfony/symfony/src/Symfony/Component/HttpKernel/Kernel.php on line 377
localproj        | !!
localproj        | !!  In Filesystem.php line 290:
localproj        | !!
localproj        | !!    Cannot rename "/tmp/removed-ids.phpbOhMis" to "/var/www/localproj/var/cache/
localproj        | !!    local/Container1LP3QEI/removed-ids.php".

Очевидно, что-то с разрешениями не так. Я попробовал это "мерзкое" (если вы знаете лучшее, пожалуйста, добавьте его здесь) решение, но оно не сработало и для меня:

#!/bin/bash
set -e

mkdir /var/www/localproj/var/cache
mkdir /var/www/localproj/var/log
chmod -R 777 /var/www/localproj/var

chown -R root:root /var/www/localproj

>&2 echo "Running composer install"
php -dxdebug.remote_enable=0 /usr/bin/composer install -n
>&2 echo "Composer install complete."

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

exec docker-php-entrypoint "$@"

Может ли это быть вызвано версией Docker Edge? (Я так не думаю, но стоит спросить). Что мне здесь не хватает? Почему разрешения не позволяют PHP копировать файлы в каталог /var/www/localproj/var?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...