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

php中世界最好的语言
Libérer: 2023-03-26 16:36:02
original
2905 Les gens l'ont consulté

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;
}
Copier après la connexion

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;
 }
}
Copier après la connexion

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
Copier après la connexion

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();
Copier après la connexion

Ensuite, exécutez :

# bash
docker-compose up
Copier après la connexion

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
Copier après la connexion

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
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal