Heim > Artikel > Backend-Entwicklung > Detaillierte Erläuterung der Containerisierung und Bereitstellung von PHP-Anwendungen
Dieses Mal werde ich Ihnen die Containerisierung und Bereitstellung von PHP-Anwendungen ausführlich erläutern. Was sind die Vorsichtsmaßnahmen für die Containerisierung und Bereitstellung von PHP-Anwendungen?
PHP ist die beste Sprache der Welt.
Die klassische LNMP-Umgebung (Linux + Nginx + PHP + MySQL) verfügt über viele vorgefertigte Bereitstellungsskripte. Aufgrund der Popularität von Docker haben viele Studenten jedoch immer noch Probleme mit der Bereitstellung. In diesem Artikel wird kurz vorgestellt, wie Sie mit Docker und Docker-Compose PHP-Anwendungen auf dem Server bereitstellen.
Lassen Sie uns zunächst die bisherige PHP-Konfiguration in Nginx überprüfen:
location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; }
Alle PHP-Dateien werden mit der PHP-Engine analysiert und PHP läuft auf dem lokalen Port 9000 (zugänglich über IP/Unix). Domänen-Sockets) Da es lokal sein kann, kann es natürlich auch über Remote-Dienste analysiert werden.
Unser Nginx-Dienst ist also wie folgt konfiguriert:
server { listen 80; charset utf-8; # access_log /var/log/nginx/nginx.access.log main; # error_log /var/log/nginx/error.log; root /var/www/html; index index.php index.html; add_header X-Cache $upstream_cache_status; location ~ \.php$ { try_files $uri =404; include fastcgi_params; fastcgi_pass php-fpm:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } }
Gleichzeitig besteht ein schwierigeres Problem darin, dass der PHP-Code sowohl in Nginx- als auch in PHP-Engines vorhanden sein muss, andernfalls kann dies nicht der Fall sein analysiert, aber das ist kein Problem, das Docker-Volume unterstützt es natürlich!
Sehen Sie sich direkt die Konfiguration von docker-compose.yml unten an:
version: '2' services: nginx: image: nginx:stable-alpine ports: - 80:80 volumes: - ./conf/nginx/conf.d:/etc/nginx/conf.d volumes_from: - php-fpm restart: always php-fpm: image: php:7.1-fpm-alpine volumes: - ./code:/var/www/html restart: always
Hinweis:
php-fpm mountet den lokalen Verzeichniscode in /var/www/html
Service_name wird in Nginx conf verwendet, um auf php-fpm zuzugreifen
nginx teilt /var/www/html von php-fpm über die volumes_from-Direktive
Schreiben Sie dies in index.php im Codeverzeichnis:
<?php echo phpinfo();
Dann führen Sie Folgendes aus:
# bash docker-compose up
Öffnen Sie den Browser und Sie können die bekannten PHP-Infos sehen:
Dann kommt hier die Frage, die einige Freunde stellen möchten. Was tun mit Abhängigkeiten? Okay, das ist es, was ich sagen werde.
Fügen Sie eine Docker-Datei in Ihr Projekt ein:
FROM php:7.1-fpm-alpine RUN docker-php-install pdo pdo-mysql COPY src /var/www/html
Zum Erstellen können Sie die Build-Funktion des Alibaba Cloud Image Service oder den von Docker bereitgestellten automatischen Build auswählen und dann den vorherigen Docker-Compose aktualisieren. yml Das ist es:
version: '2' services: nginx: image: nginx:stable-alpine ports: - 8000:80 volumes: - ./conf/nginx/conf.d:/etc/nginx/conf.d volumes_from: - php-fpm restart: always php-fpm: image: {YOUR_PHP_IMAGE_NAME}:{TAG} restart: always
Ich glaube, dass Sie die Methode beherrschen, nachdem Sie den Fall in diesem Artikel gelesen haben. Weitere spannende Informationen finden Sie in anderen verwandten Artikeln auf der chinesischen PHP-Website!
Empfohlene Lektüre:
Detaillierte Erläuterung der Verwendung des PHP-Namespace
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Containerisierung und Bereitstellung von PHP-Anwendungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!