前提
ローカル(自PC)に Docker Desktop で開発環境を構築する場合を想定しています。
LAN内の別PC・サーバーやVPS、AWS・GCP等のクラウド上での設定にはあわないのでご注意を。
ローカル開発環境の作成
Xdebug をインストールした php-fpm と Nginx の環境を作成します。
1つディレクトリを作成してその中で作業してください。
Xdebug設定
Xdebugの設定ファイルを作成します。
デバッグ(ステップ実行)するかはIDE側(PhpStormなど)で切り換える使い方になります。
zend_extension = xdebug.so
xdebug.remote_enable = "1"
xdebug.remote_autostart = "1"
xdebug.remote_host = "host.docker.internal"
項目 | 設定内容 |
---|---|
xdebug.remote_enable | リモートデバッグを有効化 |
xdebug.remote_autostart | リモートデバッグを自動で開始 |
xdebug.remote_host | リモートデバッグの接続先ホスト(自PC) |
Docker Desktop 環境ではリモートホストに host.docker.internal
を指定します。
php-fpm
Xdebug をインストールした php-fpm のコンテナを作成します。
FROM php:7.3-fpm-alpine3.10
RUN : "Install build dependencies ..."; \
set -xe; \
apk add --update --no-cache -t .build-deps \
autoconf \
build-base; \
: "Install Xdebug ..."; \
pecl install xdebug; \
: "Cleanup ..."; \
apk del --purge .build-deps; \
pecl clear-cache;
PECLを使って Xdebug をインストールします。
インストールの段階では Xdebug の有効化はせず、Docker Compose のボリューム設定を使って Xdebug 設定ファイルをマウントして有効化します。
Nginx設定
Nginx のコンテナを動作させるための最小限の設定ファイルを作成します。
server {
listen 80 default_server;
root /var/www/html/public;
index index.html index.php;
charset utf-8;
access_log /dev/stdout;
error_log /dev/stderr;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php-fpm:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.ht {
access_log off;
log_not_found off;
deny all;
}
}
Docker Compose
php-fpm と Nginx を実行するための Docker Compose 設定を作成します。
version: '3'
services:
php-fpm:
build:
context: ./
dockerfile: Dockerfile
environment:
PHP_IDE_CONFIG: "serverName=MyApp"
expose:
- "9000"
volumes:
- .:/var/www/html
- ./docker-php-ext-xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini:ro
nginx:
image: nginx:1-alpine
expose:
- "80"
ports:
- "80:80"
volumes:
- ./nginx-php-fpm.conf:/etc/nginx/conf.d/nginx-php-fpm.conf
項目 | 設定 |
---|---|
PHP_IDE_CONFIG | PhpStorm でコンソール実行のデバッグをするための設定 |
index.php
テスト用に実行するPHPファイルを作成します。
<?php
declare(strict_types=1);
if (PHP_SAPI === 'cli') {
echo PHP_VERSION;
return;
}
echo phpinfo();
環境を起動する
docker-compose up
http://127.0.0.1
にブラウザでアクセスしてPHP情報が表示されたらOKです。