建立容器導致PHP-FPM無法啟動
P粉151720173
P粉151720173 2023-11-06 22:37:04
0
2
700

我製作了一個 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"]```


#
P粉151720173
P粉151720173

全部回覆(2)
P粉463418483

您需要在啟動時執行 php fpm。如果你的虛擬機器作業系統中安裝了bash,你可以這樣做。

停止訊號SIGTERM

CMD ["/bin/bash", "-c", "php-fpm8 && 在此處包含您的 apache"]

完整指南:如何使用 docker 設定 PHP 8、NGINX 和 PHP-FPM

#
P粉476475551

我設法將它留在一個容器中,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

#
[program:apache]
command=httpd -DFOREGROUND
autostart=true
autorestart=true
priority=10
startretries=1
startsecs=1
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

fpm.conf

##
[program:php-fpm]
command = php-fpm8 --nodaemonize 
autostart=true
autorestart=true
priority=5
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

至此,兩個服務啟動並且運作完美!

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!