Объем памяти PHP исчерпан в докере с установкой magento / bin: di: compile - PullRequest
0 голосов
/ 04 февраля 2019

Я получил эту ошибку в файле журнала после запуска php bin/magento setup:di:compile или php bin/magento deploy:mode:set production в php:7.1-fpm контейнере изображения.

[2019-02-04 12:15:26] main.ERROR: / usr / local / bin / php -f / var / www / html / m230 / bin / magento setup: di: compile 2> & 1 Компиляция началась.% message% 0/7 [> ---------------------------] 0% <1 сек. 72.0 MiB% message% 0/7 [> ---------------------------] 0% <1 сек. 72.0 Генерация кода MiBProxies ... 0/7 [> ---------------------------] 0% <1 сек. 72.0 Генерация кода прокси MiB ... 1/7 [====> -----------------------] 14% 1 сек. 76.0 Генерация кода в репозиториях MiB ... 1/7 [====> -----------------------] 14% 1 сек. 76,0 МиБ. Неустранимая ошибка: допустимый объем памяти 134217728 байт исчерпан (попытка выделить 36864 байт) в / var / www / html / m230 / setup /src / Magento / Setup / Module / Di / Code / Reader / FileClassScanner.php в строке 81 Проверьте https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors для получения дополнительной информации о том, как обрабатывать ошибки нехватки памяти.[] []

Я пытался увеличить лимит памяти, запустив php -dmemory_limit=1G bin/magento setup:di:compile или даже php -dmemory_limit=-1 bin/magento setup:di:compile

Эта ошибка не возникает, если я использую php:7.1-apache image (Iиспользуйте один и тот же исходный код и базу данных, просто измените изображение)

Эта ошибка возникает как на моем ноутбуке (работает с arch-linux), так и на рабочем столе (работает на Ubuntu).Я знаю, что они достаточно сильны, чтобы выполнить эту команду.

Мой Dockerfile, который я использовал:

FROM php:7.1-fpm

# Install necessary libraries for Magento2
RUN apt-get -y update \
    && apt-get install -y \
        libmcrypt-dev \
        libxslt-dev \
        zlib1g-dev \
        libpng-dev \
        libjpeg-dev \
        libfreetype6-dev \
        libjpeg62-turbo-dev
RUN docker-php-ext-install -j$(nproc) iconv
RUN docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/
RUN docker-php-ext-install pdo_mysql mcrypt xsl intl zip bcmath -j$(nproc) gd soap

# Install xdebug
RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
RUN echo "xdebug.remote_enable=on\n\
xdebug.remote_autostart=off\n\
xdebug.remote_host=10.5.0.1\n\
xdebug.remote_port=9000\n\
xdebug.remote_handler=dbgp" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

# Set memory_limit
RUN echo "php_admin_value[memory_limit] = 2G" >> /usr/local/etc/php-fpm.d/www.conf

# Install cron
#RUN apt-get install -y cron

# Remove apt cache
RUN rm -rf /var/lib/apt/lists/*

# Create non-root user
ARG USER_NAME
ARG UID
RUN useradd -m -U ${USER_NAME} -u ${UID} -p1 -s /bin/bash -G root -o

# Edit PS1 in basrc
RUN echo "PS1='${debian_chroot:+($debian_chroot)}\w\$ '" >> /home/${USER_NAME}/.bashrc

# Change www-data user to ${USER_NAME}
RUN sed -i -e "s/www-data/${USER_NAME}/" /usr/local/etc/php-fpm.d/www.conf

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

Вы должны изменить ограничение памяти для PHP cli в контейнере php docker.

0 голосов
/ 05 февраля 2019

В docker-compose.yml

php:
    container_name: php-server
    build: ./php/
    volumes:
      - ./..:/var/www
      - ./php/ini:/usr/local/etc/php // note that this line maps docker's /usr/local/etc/php

В вашем каталоге php Dockerfile в каталоге ini / conf.d / создайте файл с именем memory_limit.ini Таким образом, ваш каталог будет ... / php / ini /conf.d / memory_limit.ini Внутри memory_limit.ini

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