Я разворачиваю свой проект Symfony в prod. Он отлично работает, когда я просто запускаю docker-compose up
. Однако у меня проблема с моим сценарием развертывания, и я пытаюсь получить доступ к веб-странице в моем навигаторе.
Неустранимая ошибка: разрешенный размер памяти 134217728 байт исчерпан (попытка выделить 20480 байт) в /var/www/redaph/vendor/monolog/monolog/src/Monolog/Handler/StreamHandler.php в строке 107
Неустранимая ошибка: разрешенный размер памяти 134217728 байт исчерпан (попытка выделить 65536 байт) в /var/www/redaph/vendor/composer/ClassLoader.php в строке 444
Что странно, так это то, что в моем dockerfile я указываю, что хочу, чтобы мой PHP_MEMORY_LIMIT был на 256M. Когда я вхожу в контейнер, я вижу следующее:
root@125de315edca:/var/www/redaph# php -i | grep memory_limit
memory_limit => 128M => 128M
Почему мой проект Docker Symfony потребляет так много памяти?
Если это нормально, то: Как мне правильно увеличить PHP_MEMORY_LIMIT в моем файле докеров?
deploy_prod.sh
#!/usr/bin/env bash
PROJECT=symfony
docker-compose up -d
docker exec redaph_symfony_1 php bin/console d:s:u --force
docker exec redaph_symfony_1 php bin/console c:c
Dockerfile:
FROM php:7.2-apache
ENV \
APACHE_ADMIN_EMAIL=webmaster@localhost \
PHP_TIME_ZONE=Europe/London \
PHP_MEMORY_LIMIT=256M \
PHP_UPLOAD_MAX_FILESIZE=32M \
PHP_POST_MAX_SIZE=32M
ARG WORK_DIR
WORKDIR $WORK_DIR
COPY composer.lock $WORK_DIR
COPY composer.json $WORK_DIR
ENV COMPOSER_ALLOW_SUPERUSER 1
RUN apt-get update \
&& apt-get install -y -f apt-transport-https \
libicu-dev \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libpq-dev \
acl \
cron \
git \
zip \
&& pecl install mongodb \
&& docker-php-ext-enable mongodb \
&& docker-php-ext-install \
exif \
gd \
intl \
opcache \
pdo_mysql \
pdo_pgsql \
zip \
&& curl -sS https://getcomposer.org/installer | php \
&& mv composer.phar /usr/local/bin/composer \
&& composer install --no-dev --prefer-dist --optimize-autoloader --no-scripts \
&& chown -R www-data:www-data $WORK_DIR \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/* \
&& a2enmod rewrite \
&& service cron start
Скорее всего, вашему образу докера не хватает прав на запись для папки, в которой хранятся журналы, что приводит к нехватке памяти в монологе (циклы ошибок).
Решение: измените права доступа к папке журналов или получите информацию о "buffer_size":https://symfony.com/doc/2.0/reference/configuration/monolog.html (не уверен, будет ли это работать со всеми обработчиками)