我制作了一个 Dockerfile,但是当我运行它并进入容器时,php8.0-fpm 服务未运行。
如何让它在构建时运行?请注意,我在 Dockerfile 中运行命令 service php8.0-fpm start ,但即使这样它也没有运行。
如何让php8.0-fpm服务随容器一起启动?
下面是我制作的 Dockerfile:
FROM ubuntu:jammy
ENV DEBIAN_FRONTEND=noninteractive
# Instalação Apache e PHP
RUN apt-get update &&
apt-get install software-properties-common -y &&
add-apt-repository ppa:ondrej/php -y &&
apt-get update &&
apt-get install -y
apache2
libapache2-mod-php8.0
libapache2-mod-php
php8.0-fpm
libapache2-mod-fcgid
# Alteração sequência index
COPY /src/dir.conf /etc/apache2/mods-enabled
# Commitando a nova configuração
RUN service apache2 restart
RUN service php8.0-fpm restart
# Inserindo página info.php
COPY /src/info.php /var/www/html
# Alterando módulos de multiprocessamento
RUN service apache2 stop &&
a2dismod php8.0 &&
a2dismod php8.1 &&
a2dismod mpm_prefork &&
a2enmod mpm_event &&
a2enconf php8.0-fpm &&
a2enmod proxy &&
a2enmod proxy_fcgi &&
service apache2 restart &&
service php8.0-fpm start
# Entrypoint para o conteiner iniciar o Apache
ENTRYPOINT ["apache2ctl", "-D", "FOREGROUND"]```
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
您需要在启动时运行 php fpm。如果你的虚拟机操作系统中安装了bash,你可以这样做。
停止信号SIGTERM
CMD ["/bin/bash", "-c", "php-fpm8 && 在此处包含您的 apache"]
完整指南:如何使用 docker 设置 PHP 8、NGINX 和 PHP-FPM
我设法将它留在一个容器中,PHP 有一个名为 Supervisor 的扩展,安装后我们能够在容器内启动两个或多个服务。
Dockerfile 如下所示:
FROM httpd:2.4-alpine RUN apk update && \ apk add \ php \ php-fpm \ php-zip \ composer \ supervisor COPY . /usr/local/apache2/htdocs COPY httpd.conf /usr/local/apache2/conf/httpd.conf COPY supervisor /etc/supervisor WORKDIR /usr/local/apache2/htdocs CMD ["supervisord","-n", "-c", "/etc/supervisor/supervisord.conf"]我为 Supervisor 创建了两个配置文件。
apache.conf
fpm.conf
至此,两个服务启动并且运行完美!