Об этом можно было спросить раньше или даже обсудить, но я не могу найти ничего, что могло бы помочь мне в этом. Я использую 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
?