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:
- 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-php
angegeben.-v "C:/delft/docker-php/app":/var/www
- Dies synchronisiert das VerzeichnisC:/delft/docker-php/app
auf dem Windows-Host mit/var/www
im 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.
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