ホームページ  >  記事  >  バックエンド開発  >  PHPアプリケーションのコンテナ化とデプロイメントの詳細な説明

PHPアプリケーションのコンテナ化とデプロイメントの詳細な説明

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-18 14:46:182898ブラウズ

今回は、PHP アプリケーションのコンテナ化とデプロイについて詳しく説明します。PHP アプリケーションのコンテナ化とデプロイの 注意事項 は何ですか?実際の事例を見てみましょう。

PHP は世界で最高の言語です。

古典的な LNMP (linux + nginx + php + mysql) 環境には、既成のデプロイメント スクリプトが多数ありますが、Docker が普及している今日でも、多くの学生がデプロイ方法についてまだ問題を抱えているため、この記事ではその方法を簡単に紹介します。 Docker と docker-compose を使用して、サーバーに php アプリケーションをデプロイします。

まず、nginx での過去の php 設定を確認してみましょう:

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;
}
PHP はローカルの 9000 ポート (ip/unix ドメイン ソケット経由でアクセス可能) を使用して解析されます。もちろん、リモート サービスを通じて解析することもできます。

そのため、私たちの nginx サービスは次のように構成されています:

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;
 }
}
同時に、より難しい問題は、php コードが nginx エンジンと php エンジンの両方に存在する必要があることです。そうでないと解析できませんが、これは問題ではありません。 、docker's volume 自然なサポート!

以下の docker-compose.yml 設定を直接見てください:

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
注:

php-fpm はローカル ディレクトリ コードを /var/www/html にマウントしました

service_name は php-fpm
nginx にアクセスするために nginx conf で使用されますvolume_from コマンドを通じて php-fpm の /var/www/html を共有します
コード ディレクトリにindex.php を書き込みます:

<?php
echo phpinfo();
次に実行します:

# bash
docker-compose up
ブラウザを開くと、見慣れた phpinfo:

が表示されます:

そこで質問が来ます。何人かの友人が「私が依存している場合はどうすればよいですか?」と尋ねたいと考えています。わかりました、それが私が先に進んで言うことです。

プロジェクトに Dockerfile を入れます:

FROM php:7.1-fpm-alpine
RUN docker-php-install pdo pdo-mysql
COPY src /var/www/html
ビルドするには、Alibaba Cloud Image Service ビルド機能または Docker が提供する自動ビルドを選択し、以前の docker-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
信じてください。この記事の事例を読んだ後は、その方法を習得したことになります。さらに興味深い情報については、PHP 中国語 Web サイトの他の関連記事に注目してください。

推奨読書:

PHP名前空間の使用の詳細な説明

PHP中国語ツールクラス ChineseUtil を使用して中国語の文字とピンインを変換する方法

以上がPHPアプリケーションのコンテナ化とデプロイメントの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。