Maison  >  Article  >  développement back-end  >  Explication détaillée de la conteneurisation et du déploiement d'applications PHP

Explication détaillée de la conteneurisation et du déploiement d'applications PHP

php中世界最好的语言
php中世界最好的语言original
2018-05-18 14:46:182898parcourir

Cette fois, je vais vous apporter une explication détaillée de la conteneurisation et du déploiement d'applications PHP. Quelles sont les précautions pour la conteneurisation et le déploiement d'applications PHP ? Voici des cas pratiques, jetons un coup d'oeil.

PHP est le meilleur langage au monde.

L'environnement LNMP classique (linux + nginx + php + mysql) dispose de nombreux scripts de déploiement prêts à l'emploi. Cependant, aujourd'hui, avec la popularité de Docker, de nombreux étudiants ont encore des problèmes sur la façon de déployer, donc Cet article présente brièvement comment utiliser Docker et docker-compose pour déployer des applications php sur le serveur.

Tout d'abord, passons en revue la configuration passée de php dans nginx :

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;
}

Tous les fichiers php sont analysés à l'aide du moteur php, et php s'exécute sur le port local 9000 (accessible via les sockets de domaine ip/unix Access), puisqu'il peut être local, il peut bien sûr également être résolu via des services distants.

Notre service nginx est donc configuré comme suit :

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;
 }
}

En même temps, un problème plus difficile est que le code php doit exister à la fois dans les moteurs nginx et php, sinon il ne peut pas être analysé. Mais ce n'est pas un problème, le volume du docker le prend naturellement en charge !

Regardez directement la configuration docker-compose.yml ci-dessous :

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

Remarque :

php-fpm monte le code du répertoire local sur /var/www/ html
service_name est utilisé dans nginx conf pour accéder à php-fpm
nginx partage le /var/www/html de php-fpm via la directive volumes_from
Écrivez ceci dans index.php dans le répertoire de code :

<?php
echo phpinfo();

Ensuite, exécutez :

# bash
docker-compose up

Ouvrez le navigateur et vous pourrez voir le phpinfo familier :

Ensuite, la question vient, Quelques amis Je veux demander, que dois-je faire si je suis dépendant ? D'accord, c'est ce que je vais dire.

Mettez un Dockerfile dans votre projet :

FROM php:7.1-fpm-alpine
RUN docker-php-install pdo pdo-mysql
COPY src /var/www/html

Pour construire, vous pouvez choisir la fonction de construction Alibaba Cloud Image Service ou la construction automatique fournie par Docker, puis mettre à jour le docker précédent. compose .yml :

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

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Explication détaillée de l'utilisation de l'espace de noms PHP

Comment convertir les caractères chinois et le pinyin avec PHP Classe d'outils chinois ChineseUtil

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn