Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte Erläuterung der Containerisierung und Bereitstellung von PHP-Anwendungen

Detaillierte Erläuterung der Containerisierung und Bereitstellung von PHP-Anwendungen

php中世界最好的语言
php中世界最好的语言Original
2018-05-18 14:46:182896Durchsuche

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

So konvertieren Sie chinesische Schriftzeichen und Pinyin mit PHP Chinesische Werkzeugklasse ChineseUtil

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn