Chu*_*ung 5 php magento docker magento2
我跑了后,在日志文件中此错误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 sec 72.0 MiBProxies 代码生成... 0/7 [>---- -----------------------] 0% < 1 sec 72.0 MiB 代理代码生成... 1/7 [====>---- -------------------] 14% 1 秒 76.0 MiB 存储库代码生成... 1/7 [====>--------- --------------] 14% 1 sec 76.0 MiB Fatal error: Allowed memory size of 134217728 bytes in /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图像,则不会发生此错误(我使用相同的源代码和数据库,只需更改图像)
此错误发生在我的笔记本电脑(运行 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
Run Code Online (Sandbox Code Playgroud)
Nga*_*ine 14
通过在您的 docker 容器 bash 上运行此命令来确认您的内存不足~$ php -r "echo ini_get('memory_limit').PHP_EOL;"。它应该输出128M. 要增加,请检查该/usr/local/etc/php/conf.d/路径是否存在于您的容器中。如果您的 php 存储库是从官方 Docker Hub 构建和维护的,我相信应该如此。如果存在:
~$ cd /usr/local/etc/php/conf.d/
#创建和/或更新一个名为 docker-php-memlimit.ini 的文件(注释)
#in /usr/local/etc/php/conf.d/(注释)
~$ echo 'memory_limit = -1' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini
#从下面的行中,我们使用 -1(注释)将内存设置为无限制
#或者你可以通过改变'memory_limit = 512M'来设置分配的数量(评论)
# 然后用下面的代码检查内存(注释)
~$ php -r "echo ini_get('memory_limit').PHP_EOL;"
为了避免每次需要安装时都运行 bash,您可以将文件添加到 dockerfile 中,如下所示:
#dockerfile 运行 cd /usr/local/etc/php/conf.d/ && \ echo 'memory_limit = -1' >> /usr/local/etc/php/conf.d/docker-php-memlimit.ini
如果 docker build 无法将目录更改为 /usr/local/etc/php/conf.d/ 它将中断。您可以通过其他方式从您的回购中探索。
参考资料:https : //github.com/nextcloud/docker/issues/447
小智 9
在 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
Run Code Online (Sandbox Code Playgroud)
在你的 php Dockerfile 目录下的 ini/conf.d/ 创建一个名为 memory_limit.ini 的文件所以你的目录将是 .../php/ini/conf.d/memory_limit.ini 里面的 memory_limit.ini
memory_limit = -1
Run Code Online (Sandbox Code Playgroud)