La création d'un conteneur empêche le démarrage de PHP-FPM
P粉151720173
P粉151720173 2023-11-06 22:37:04
0
2
635

J'ai créé un Dockerfile, mais lorsque je l'ai exécuté et que je suis entré dans le conteneur, le service php8.0-fpm ne fonctionnait pas.

Comment le faire fonctionner au moment de la construction ? Notez que j'exécute la commande service php8.0-fpm start dans le Dockerfile, mais même dans ce cas, elle ne s'exécute pas.

Comment faire démarrer le service php8.0-fpm avec le conteneur ?

Voici le Dockerfile que j'ai créé :

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

répondre à tous(2)
P粉463418483

Vous devez exécuter php fpm au démarrage. Vous pouvez le faire si bash est installé sur le système d'exploitation de votre machine virtuelle.

Signal d'arrêt SIGTERM

CMD ["/bin/bash", "-c", "php-fpm8 && incluez votre Apache ici"]

Guide complet : Comment configurer PHP 8, NGINX et PHP-FPM à l'aide de Docker

P粉476475551

J'ai réussi à le conserver dans un conteneur, PHP a une extension appelée Supervisor et après l'installation, nous avons pu démarrer deux ou plusieurs services à l'intérieur du conteneur.

Le fichier Docker ressemble à ceci :

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"]

J'ai créé deux fichiers de configuration pour 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

À ce stade, les deux services sont démarrés et fonctionnent parfaitement !

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!