今回は、PHP アプリケーションのコンテナ化とデプロイについて詳しく説明します。PHP アプリケーションのコンテナ化とデプロイの 注意事項 は何ですか?実際の事例を見てみましょう。
PHP は世界で最高の言語です。
古典的な LNMP (linux + nginx + php + mysql) 環境には、既成のデプロイメント スクリプトが多数ありますが、Docker が普及している今日でも、多くの学生がデプロイ方法についてまだ問題を抱えているため、この記事ではその方法を簡単に紹介します。 Docker と docker-compose を使用して、サーバーに php アプリケーションをデプロイします。
まず、nginx での過去の php 設定を確認してみましょう:
1 2 3 4 5 6 7 8 9 | 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 サービスは次のように構成されています:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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 設定を直接見てください:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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 を書き込みます:
次に実行します:
ブラウザを開くと、見慣れた phpinfo:
が表示されます:

そこで質問が来ます。何人かの友人が「私が依存している場合はどうすればよいですか?」と尋ねたいと考えています。わかりました、それが私が先に進んで言うことです。
プロジェクトに Dockerfile を入れます:
1 2 3 | 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 を更新します:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 サイトの他の関連記事を参照してください。