HOWTO · PHP
PHP-FPM および Nginx Docker コンテナーのセットアップ
このチュートリアルでは、Docker でローカルに開発する場合に、PHP、PHP-FPM、および NGINX コンテナーをセットアップする方法について説明します。
このページの内容
このチュートリアルでは、Docker でローカルに開発する場合に、PHP、PHP-FPM、および NGINX コンテナーをセットアップする方法について説明します。
ポイント:
- コマンドラインでコンテナを構築して実行します。
- Docker ファイルとその用途。
- コンテナがどのように相互作用するか。
Docker プログラムと Git Bash がデバイスにインストールされていることを確認します。
PHP CLI コンテナーのセットアップ
ソースコードを保存するディレクトリ C:/delft/docker-php/app を作成します。
mkdir -p "C:/delft/docker-php/app"
このチュートリアルでは、公式の PHP イメージを使用します。 以下のコードを実行します。
docker run -d --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
これの意味は、
docker run- コンテナを実行します。-d- バックグラウンドで実行されます (切り離されます)。--name docker-php-docker-phpを指定します。-v "C:/delft/docker-php/app":/var/www- これにより、Windows ホスト上のディレクトリC:/delft/docker-php/appが/var/ と同期されます wwwコンテナ内。php:7.0-cli- このイメージを使用してコンテナを構築します。
出力:
$ docker run -d --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
Unable to find image 'php:7.0-cli' locally
私たちのマシンにはイメージがないため、Docker は公式レジストリからイメージを取得しようとします。
docker ps -a コマンドを実行して、コンテナーが実行されているかどうかを確認します。
コンテナーは、初期化の直後に実行を停止することに注意してください。 docker run コマンドに -i 引数を追加する必要があります。
docker run コマンドを再度実行する前に、以下のコマンドを実行してください。
docker rm docker-php
上記のコマンドは、最初の docker-php を削除します。再度使用することはできないからです。 -i フラグを指定して docker run コマンドを実行できるようになりました。
docker run -di --name docker-php -v "C:/delft/docker-php/app":/var/www php:7.0-cli
7b3024a542a2d25fd36cef96f4ea689ec7ebb758818758300097a7be3ad2c2f6
docker ps -a コマンドを実行して、コンテナーが実行されているかどうかを確認します。
ログインするには、以下のコマンドを実行します。
winpty docker exec -it docker-php bash
PHP-FPM と NGINX を使用して Web スタックをセットアップする
PHP-FPM および Nginx コンテナーをセットアップする方法について説明します。
NGINX のセットアップ
公式の Nginx イメージを実行するためのコンテナーとして機能するサーバーを取得することから始めます。 docker-compose.yml を作成して、最新の Nginx イメージを実行します。 ポート 80 と 8080 を使用します。
web:
image: nginx:latest
ports:
- "8080:80"
次に、docker-compose up コマンドを実行します。
出力:
docker-compose.yml ファイルをローカル リポジトリにマウントします。 docker-compose.yml ファイルがあるフォルダー delft を使用します。
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./delft:/delft
この時点で、Nginx はフォルダーの存在を認識していません。 これを解決するには、次の site.conf ファイルを使用します。
server {
index index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /delft;
}
セットアップを有効にする必要があります。 docker-compose.yml ファイルをもう少し変更しましょう。
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./delft:/delft
- ./site.conf:/etc/nginx/conf.d/site.conf
deft フォルダーに index.html を追加して、以下のコードを実行します。
docker-compose up
Nginx が稼働しているはずです。
PHP-FPMを追加
次のステップは、Nginx コンテナーにリンクする公式の PHP7-FPM を取得することです。 更新された docker-compose.yml ファイルは次のようになります。
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./delft:/delft
- ./site.conf:/etc/nginx/conf.d/site.conf
links:
- php
php:
image: php:7-fpm
次に、PHP-FPM コンテナーを使用して PHP ファイルを解釈するように Nginx コンテナーを構成します。 更新された site.conf ファイルは次のようになります。
server {
index index.php index.html;
server_name php-docker.local;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /delft;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
}
プログラムをテストしてみましょう。 まず、index.html ファイルの名前を index.php に変更し、内容を次のように変更します。
<?php
echo phpinfo();
docker-compose up コマンドを実行する前に、delft フォルダーを PHP コンテナーにマウントする必要があります。 docker-compose.yml ファイルへの最後の繰り返しは、次のようになります。
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./delft:/delft
- ./site.conf:/etc/nginx/conf.d/site.conf
links:
- php
php:
image: php:7-fpm
volumes:
- ./delft:/delft
docker-compose up コマンドを実行すると、以下の画像が生成されます。
これでチュートリアルは終わりです。