Richten Sie PHP-FPM- und Nginx-Docker-Container ein

John Wachira 20 Juni 2023
  1. Richten Sie den PHP-CLI-Container ein
  2. Richten Sie einen Webstack mit PHP-FPM und NGINX ein
Richten Sie PHP-FPM- und Nginx-Docker-Container ein

In diesem Tutorial wird erläutert, wie Sie Ihre PHP-, PHP-FPM- und NGINX-Container einrichten, wenn Sie lokal auf Docker entwickeln.

Imbiss:

  1. Erstellen und führen Sie Container auf Ihrer Befehlszeile aus.
  2. Die Docker-Datei und ihre Verwendung.
  3. Wie Container interagieren.

Stellen Sie sicher, dass Sie das Docker-Programm und Git Bash auf Ihrem Gerät installiert haben.

Richten Sie den PHP-CLI-Container ein

Wir erstellen das Verzeichnis C:/delft/docker-php/app, wo wir unseren Quellcode speichern:

mkdir -p "C:/delft/docker-php/app"

In unserem Tutorial verwenden wir das offizielle PHP-Image. Wir führen den folgenden Code aus;

docker run -d --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli

Das heisst,

  1. docker run – Dies führt einen Container aus.
  2. -d - Es wird im Hintergrund ausgeführt (getrennt).
  3. --name docker-php – Hiermit wird docker-php angegeben.
  4. -v "C:/delft/docker-php/app":/var/www - Dies synchronisiert das Verzeichnis C:/delft/docker-php/app auf dem Windows-Host mit /var/www im Container.
  5. php:7.0-cli – Dies wird dieses Image verwenden, um den Container zu erstellen.

Ausgang:

$ docker run -d --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally

Da unser Computer nicht über das Image verfügt, versucht Docker, das Image aus der offiziellen Registrierung abzurufen.

Wir führen den Befehl docker ps -a aus, um zu sehen, ob der Container läuft.

Sie werden feststellen, dass der Container sofort nach der Initialisierung nicht mehr ausgeführt wird. Wir müssen das Argument -i zum Befehl docker run hinzufügen.

Bevor Sie den Befehl docker run erneut ausführen, führen Sie den folgenden Befehl aus.

docker rm docker-php

Der obige Befehl entfernt unser erstes docker-php, da wir es nicht erneut verwenden können. Wir können jetzt den Befehl docker run mit dem Flag -i ausführen.

docker run -di --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6

Führen Sie den Befehl docker ps -a aus, um zu prüfen, ob der Container ausgeführt wird.

Um sich anzumelden, führen Sie den folgenden Befehl aus;

winpty docker exec -it docker-php bash

Richten Sie einen Webstack mit PHP-FPM und NGINX ein

Lassen Sie uns nun besprechen, wie Sie die PHP-FPM- und Nginx-Container einrichten können.

Richten Sie NGINX ein

Wir beginnen damit, einen Server zu bekommen, der als Container fungiert, um das offizielle Nginx-Image auszuführen. Wir werden eine docker-compose.yml erstellen, um unser neuestes Nginx-Image auszuführen. Wir werden die Ports 80 und 8080 verwenden.

web:
 image: nginx:latest
 ports:
 - "8080:80"

Anschließend führen wir den Befehl docker-compose up aus.

Ausgang:

nginx

Lassen Sie uns die Datei docker-compose.yml in einem lokalen Repository mounten. Wir verwenden den Ordner delft, in dem sich unsere Datei docker-compose.yml befindet.

web:
    image: nginx:latest
    ports:
        - "8080:80"
    volumes:
        - ./delft:/delft

Zu diesem Zeitpunkt weiß Nginx nicht, dass unser Ordner existiert. Wir werden die folgende site.conf-Datei verwenden, um dies zu beheben.

server {
    index index.html;
    server_name php-docker.local;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /delft;
}

Wir müssen das Setup aktivieren. Lassen Sie uns die Datei docker-compose.yml noch etwas modifizieren.

web:
    image: nginx:latest
    ports:
        - "8080:80"
    volumes:
        - ./delft:/delft
        - ./site.conf:/etc/nginx/conf.d/site.conf

Wir können jetzt unserem Ordner deft eine index.html hinzufügen und den folgenden Code ausführen;

docker-compose up

Unser Nginx sollte betriebsbereit sein.

Fügen Sie PHP-FPM hinzu

Der nächste Schritt besteht darin, das offizielle PHP7-FPM abzurufen, das mit unserem Nginx-Container verknüpft wird. Die aktualisierte docker-compose.yml-Datei sollte so aussehen.

web:
    image: nginx:latest
    ports:
        - "8080:80"
    volumes:
        - ./delft:/delft
        - ./site.conf:/etc/nginx/conf.d/site.conf
    links:
        - php
php:
    image: php:7-fpm

Wir werden jetzt unseren Nginx-Container so konfigurieren, dass er PHP-Dateien mit dem PHP-FPM-Container interpretiert. Unsere aktualisierte site.conf-Datei wird lauten,

server {
    index index.php index.html;
    server_name php-docker.local;
    error_log  /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /delft;

    location ~ \.php$ {
        try_files $uri =404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
}

Lassen Sie uns das Programm testen. Zuerst werden wir unsere Datei index.html in index.php umbenennen und den Inhalt wie folgt ändern.

<?php
echo phpinfo();

Bevor wir den Befehl docker-compose up ausführen, müssen wir unseren delft-Ordner in unseren PHP-Container mounten. Die letzte Iteration unserer Datei docker-compose.yml lautet:

web:
    image: nginx:latest
    ports:
        - "8080:80"
    volumes:
        - ./delft:/delft
        - ./site.conf:/etc/nginx/conf.d/site.conf
    links:
        - php
php:
    image: php:7-fpm
    volumes:
        - ./delft:/delft

Das Ausführen des Befehls docker-compose up ergibt das folgende Bild.

phpinfo

Das fasst unser Tutorial zusammen.

John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn