Docker für PHP-Entwickler: Grundkenntnisse

               Theoretisch sollte ein Docker-Behälter genau einen Prozess ausführen (nicht mehr und nicht weniger als einen Prozess).

               In Wirklichkeit möchten wir PHP-PFM und Nginx auf demselben Docker-Behälter laufen lassen, da wir beide                               benötigen, damit unsere Website richtig bedient werden kann.

               Es bringt keinen Vorteil, PHP-FPM und Nginx in zwei separaten Docker-Behältern laufen zu lassen.

               Dazu verwenden wir supervisord, einen Prozessverwaltungsdämon, mit dem wir Prozesse unter Linux überwachen und                steuern können with Linux.

               Wir konfigurieren supervisord in drei Schritten.

  • Schritt 1: Supervisord konfigurieren. Für uns: supervisord.conf
  • Schritt 2: Dockerfile-Datei aktualisieren (siehe Abschnitt 6/13. „Statische Dateien bereitstellen und Nginx-Konfiguration“)                mit der neu erstellten supervisord.conf Datei.
  • Schritt 3: Wiederaufbau der Docker-Behälter-Bildernach der Aktualisierung der Dockerfile-Datei.

Schritt 1: supervisord.conf
[supervisord]
nodaemon=true

[program:nginx]
command=nginx
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

[program:php-fpm]
command=php-fpm7.2
stdout_logfile=/dev/stdout
stdout_logfile_maxbytes=0
stderr_logfile=/dev/stderr
stderr_logfile_maxbytes=0

Schritt 2: Dockerfile
FROM ubuntu:18.04

LABEL maintainer="Kâmi Barut-Wanayo"

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update \
    && apt-get install -y gnupg tzdata \
    && echo "UTC" > /etc/timezone \
    && dpkg-reconfigure -f noninteractive tzdata

RUN apt-get update \
    && apt-get install -y curl zip unzip git supervisor sqlite3 \
       nginx php7.2-fpm php7.2-cli \
       php7.2-pgsql php7.2-sqlite3 php7.2-gd \
       php7.2-curl php7.2-memcached \
       php7.2-imap php7.2-mysql php7.2-mbstring \
       php7.2-xml php7.2-zip php7.2-bcmath php7.2-soap \
       php7.2-intl php7.2-readline php7.2-xdebug \
       php-msgpack php-igbinary \
    && php -r "readfile('http://getcomposer.org/installer');" | php -- --install-dir=/usr/bin/ --filename=composer \
    && mkdir /run/php \
    && apt-get -y autoremove \
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* \
    && echo "daemon off;" >> /etc/nginx/nginx.conf

ADD default /etc/nginx/sites-available/default
ADD supervisord.conf /etc/supervisor/conf.d/supervisord.conf

CMD ["supervisord"]

                 Schritt 3: Wir erstellen unser Docker-Behälter-Bild mit demselben Befehl, den wir in Abschnitt 6/13 („Statische Dateien                                  bereitstellen und Nginx-Konfiguration“) verwendet haben.

$ docker build -t  kbarut/app:latest -f docker/app/Dockerfile docker/app
										

Kâmi Barut-Wanayo © 2024 - 2025