PHP-FPM および Nginx Docker コンテナーのセットアップ
このチュートリアルでは、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
コマンドを実行すると、以下の画像が生成されます。
これでチュートリアルは終わりです。
John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.
LinkedIn