Maison > Article > développement back-end > Explication détaillée de la conteneurisation et du déploiement d'applications PHP
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!