运行cache:clear和cache:warmup

我正在使用docker运行symfony应用程序,并具有以下Dockerfile:

# PHP Image
FROM php:7.3-fpm-alpine as base

WORKDIR /var/www/html

RUN set -xe \
    && apk add --no-cache bash icu-dev \
    libzip-dev \
    libzip \ 
    zlib-dev  \
    zlib \
    libpng-dev \
    libsodium-dev \
    libtool \
    libwebp-dev \
    libxml2-dev \
    libxpm-dev \
    php7-dev \
    imagemagick-dev \   
    g++ \
    gcc \
    make \  
    imagemagick \
    imagemagick-libs \
    && docker-php-ext-install zip bcmath pdo_mysql mysqli mbstring opcache pdo pdo_mysql \
    && docker-php-ext-install gd \
    && pecl install imagick apcu \
    && docker-php-ext-enable apcu opcache

EXPOSE 9000
CMD ["php-fpm","--nodaemonize"]

# Composer Image
FROM composer:1.8 as vendor

COPY services/api/composer.json /app/composer.json
COPY services/api/composer.lock /app/composer.lock

RUN cd /app && composer install --prefer-dist --no-scripts --no-progress --no-suggest --no-interaction

# PHP APP Image
FROM base as app

COPY ./services/api/bin /var/www/html/bin
COPY ./services/api/src /var/www/html/src
COPY ./services/api/config /var/www/html/config
COPY ./services/api/public /var/www/html/public
COPY ./services/api/templates /var/www/html/templates
COPY ./services/api/.env /var/www/html/.env

COPY --from=vendor /app/vendor /var/www/html/vendor
COPY --from=vendor /usr/bin/composer /usr/bin/composer

COPY ./docker/php/www.conf /usr/local/etc/php-fpm.d/www.conf
COPY ./docker/php/php.ini /usr/local/etc/php/conf.d/php.ini

RUN mkdir -p var/log  && chmod -Rf 777 var/log
RUN mkdir -p var/cache/prod  && chmod -Rf 777 var/cache/prod
RUN chmod -Rf 777 var/
# RUN HTTPDUSER=$(ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1)
# RUN setfacl -dR -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var
# RUN setfacl -R -m u:"$HTTPDUSER":rwX -m u:$(whoami):rwX var

COPY ./docker/php/entrypoint*.sh /
RUN chmod +x /entrypoint*.sh

ENTRYPOINT ["/bin/sh","/entrypoint.sh"]
EXPOSE 9000
CMD ["php-fpm","--nodaemonize"]

# NGINX Image

FROM nginx:alpine as webservice
RUN apk add --no-cache bash coreutils grep sed
COPY ./docker/nginx/default.conf /etc/nginx/conf.d/default.conf

RUN mkdir -p /var/www/html && chmod 777 /var/www/html
COPY --from=app /var/www/html /var/www/html
COPY --from=vendor /app/vendor /var/www/html/vendor

CMD /bin/sh -c "exec nginx -g 'daemon off;'"

我的php-fpm容器有这个入口点:

#!/usr/bin/env bash
set -eux

cd /var/www/html

until nc -z -v -w30 ${DATABASE_HOST} ${DATABASE_PORT}
do
  echo "Waiting for database connection..."
  # wait for 5 seconds before check again
  sleep 5
done

set +e
php bin/console cache:clear
php bin/console cache:warmup
php bin/console doctrine:migrations:migrate --no-interaction

exec "$@"

但是,当我尝试运行容器并开始执行入口点脚本时,它会引发错误:

  

php_1 | + php bin /控制台缓存:清除php_1 | PHP致命错误:   允许的内存大小为2097152字节已用尽(尝试分配   32768字节)   /var/www/html/vendor/symfony/dependency-injection/ContainerBuilder.php   在第129行

我怀疑这是var / cache和var / log上的权限错误,但我已经尝试过chmod 777。我真的不知道我还有什么地方搞砸了。

注意:我不想将memory_limit增加到-1,因为这是一个坏主意,并且会导致我的主机冻结。

非常感谢您!

hanzhengli 回答:运行cache:clear和cache:warmup

在symfony命令中尝试以下操作:

php -d memory_limit=128M bin/console cache:clear
本文链接:https://www.f2er.com/3165648.html

大家都在问