我正在使用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,因为这是一个坏主意,并且会导致我的主机冻结。
非常感谢您!