HOWTO · PHP
Richten Sie PHP-FPM- und Nginx-Docker-Container ein
In diesem Tutorial besprechen wir, wie Sie Ihre PHP-, PHP-FPM- und NGINX-Container einrichten können, wenn Sie lokal auf Docker entwickeln.
In diesem Tutorial wird erläutert, wie Sie Ihre PHP-, PHP-FPM- und NGINX-Container einrichten, wenn Sie lokal auf Docker entwickeln.
Imbiss:
- Erstellen und führen Sie Container auf Ihrer Befehlszeile aus.
- Die Docker-Datei und ihre Verwendung.
- 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,
docker run– Dies führt einen Container aus.-d- Es wird im Hintergrund ausgeführt (getrennt).--name docker-php– Hiermit wirddocker-phpangegeben.-v "C:/delft/docker-php/app":/var/www- Dies synchronisiert das VerzeichnisC:/delft/docker-php/appauf dem Windows-Host mit/var/wwwim Container.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:
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.
Das fasst unser Tutorial zusammen.