首页 > 解决方案 > “symfony serve”在 php 7.2 (docker/alpine) 中崩溃

问题描述

我尝试构建并运行一个 docker 容器,但该symfony serve过程在启动后立即崩溃:

Jul 19 19:14:05 |INFO | PHP    listening path="/usr/local/sbin/php-fpm" php="7.2.20" port=43115
Jul 19 19:14:05 |DEBUG| PHP    started 
Jul 19 19:14:05 |DEBUG| PHP    ERROR: cannot get uid for user '_www' 
Jul 19 19:14:05 |DEBUG| PHP    ERROR: FPM initialization failed 

 [OK] Web server listening on http://127.0.0.1:8000 (PHP FPM 7.2.20)                                                    


WARNING unable to find the application log
Jul 19 19:14:06 |DEBUG| PHP    stopped 
Jul 19 19:14:06 |INFO | SERVER shut down, bye! 

  PHP server exited unexpectedly: exit status 78  

这是我的Dockerfile

FROM php:7.2-fpm-alpine

ENV COMPOSER_ALLOW_SUPERUSER 1

RUN apk update && apk upgrade && apk add bash

RUN wget https://get.symfony.com/cli/installer -O - | bash \
    && mv /root/.symfony/bin/symfony /usr/local/bin/symfony \
    && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
    && php composer-setup.php --filename=composer \
    && php -r "unlink('composer-setup.php');" \
    && mv composer /usr/local/bin/composer

EXPOSE 8000

# Set working directory
WORKDIR /srv/api2/

# Copy source files
COPY bin bin/
COPY config config/
COPY public public/
COPY src src/
COPY .env ./
COPY composer.json composer.json symfony.lock ./

RUN mkdir -p var/cache var/logs \
    && composer install --prefer-dist --no-dev --optimize-autoloader --classmap-authoritative --no-scripts --no-progress --no-suggest \
    && composer dump-autoload --optimize --no-dev --classmap-authoritative \
    && composer clear-cache

CMD ["symfony", "serve", "--no-tls"]

标签: phpsymfonydocker

解决方案


解决您的问题的一个简单解决方案是为 Alpine 使用非 FPM PHP 图像。

您可以更换:

FROM php:7.2-fpm-alpine

和:

FROM php:7.2-alpine

推荐阅读