【发布时间】:2022-08-23 16:49:47
【问题描述】:
PHP FPM 似乎无法启动。 FPM 日志不会出现在任何地方。
码头工人文件
FROM ubuntu:16.04
RUN apt-get update -y && apt-get install -y software-properties-common language-pack-en-base && apt-get install sudo -y
RUN LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
RUN apt-get -y update && apt-get install -y \\
php7.0-fpm \\
php7.0-common \\
php7.0-opcache \\
php7.0-bcmath \\
php7.0-pspell \\
php7.0-recode \\
php7.0-cli \\
php7.0-tidy \\
php7.0-dev \\
php7.0-curl \\
php7.0-gd \\
php7.0-imap \\
php7.0-intl \\
php7.0-json \\
php7.0-ldap \\
php7.0-mbstring \\
php7.0-mcrypt \\
php7.0-mysql \\
php7.0-pgsql \\
php7.0 \\
php7.0-xml \\
php-memcached \\
php-redis
# Install Composer
COPY --from=composer:latest /usr/bin/composer /usr/local/bin/composer
## Make PHP FPM Log Dir
RUN mkdir -p /var/log/php7.0-fpm
## Copy and set PHP config files
COPY /containers/config/php-fpm.conf /etc/php/7.0/fpm/conf
COPY /containers/config/php.ini /etc/php/7.0/fpm/
COPY /containers/config/www.conf /etc/php/7.0/fpm/pool.d/
# Make App dir
RUN mkdir -p /app
# Switch to new App dir
WORKDIR /App
# Add contents of my-application project
ADD . /my-application
# Install dependencies with composer
RUN composer dump-autoload
# Expose port for php-fpm
EXPOSE 9000
CMD [\"sudo service php7.0-fpm start\"]
检查配置是否存在时,它们存在。
root@b8f3677b721b:/etc/php/7.0/fpm# ls -la
total 112
drwxr-xr-x 1 root root 4096 Jan 4 15:34 .
drwxr-xr-x 1 root root 4096 Jan 3 22:45 ..
-rw-r--r-- 1 root root 4424 Jan 4 15:34 conf
drwxr-xr-x 2 root root 4096 Jan 3 22:46 conf.d
-rw-r--r-- 1 root root 4421 Oct 8 2020 php-fpm.conf
-rw-r--r-- 1 root root 71010 Dec 22 16:37 php.ini
drwxr-xr-x 1 root root 4096 Jan 4 15:34 pool.d
PHP版本是正确的
root@b8f3677b721b:/etc/php/7.0/fpm# php -v
PHP 7.0.33-0ubuntu0.16.04.16 (cli) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2017 Zend Technologies
with Zend OPcache v7.0.33-0ubuntu0.16.04.16, Copyright (c) 1999-2017, by Zend Technologies
试图以无效的方式直接调用初始化脚本似乎表明它在那里。
root@b8f3677b721b:/etc/init.d# sh php7.0-fpm
Usage: /etc/init.d/php-fpm7.0 {start|stop|status|restart|reload|force-reload}
尝试在容器中手动运行 php-fpm,结果如下
root@b8f3677b721b:/etc# sudo service php7.0-fpm start
root@b8f3677b721b:/etc# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 4380 656 ? Ss 15:35 0:00 sleep infinity
root 8 0.0 0.0 18348 3408 pts/0 Ss 15:35 0:00 /bin/bash
root
256 0.0 0.0 34428 2924 pts/0 R+ 16:11 0:00 ps -aux
不知道还有什么可以在这里尝试和做的。我已经阅读了许多其他问题,但似乎没有一个答案/接受的解决方案有效。不确定这是否重要,我在另一个容器中运行 Nginx,同时在 nginx 配置中引用主机名。
-
service广泛地在 Docker 中不起作用;你永远不需要sudo;并且您的CMD语法尝试将\"sudo service start ...\"作为单个 shell 字运行,包括空格,这应该会导致您在日志中看到错误。设置CMD [\"php-fpm\"]会更好吗? (或者,您可以使用Docker Hubphp:fpmimage 而不是重复其工作吗?) -
有时最简单的事情就在你面前。使用 php7.0-fpm 图像开始。谢谢@DavidMaze。现在我只需要调整一些 nginx 的东西,我应该让它工作。