👻
サクッと作れるPHP環境(Docker/MySQL/phpMyAdmin/Composer/Xdebug/PHP_CodeSniffer)
環境概要
- Docker
- PHP:8.2-apache
- MySQL:8.0
- phpMyAdmin:latest
- VSCode
- Xdebug
- Composer
- PHP_CodeSniffer
プロジェクトのGitHubリポジトリ
GitHubリポジトリ:https://github.com/OBookBook/php-docker-env
リポジトリをクローンするには、次のコマンドを実行してください。
git clone https://github.com/OBookBook/php-docker-env.git
ディレクトリ構造とファイルの役割
プロジェクトのディレクトリ構造と各ファイルの役割は以下の通りです。
├── .vscode
│ └── launch.json # VSCodeデバッグ構成を定義するファイル(Xdebug設定)
├── Dockerfile
├── README.md
├── composer.json # PHP_CodeSnifferの設定
├── docker-compose.yml # Dockerコンテナの設定とphp.iniのマウント
├── index.php
└── php.ini # Xdebugの設定
Dockerの設定
docker-compose.ymlを作成
docker-compose.ymlファイルを編集し、以下の内容を設定してください。セキュリティ上の注意を怠らないようにしてください。
version: "3.7"
services:
db:
image: mysql:8.0
container_name: mysql
restart: always
environment:
# ルートユーザのパスワードを各自で設定してください
MYSQL_ROOT_PASSWORD: root_password_kimetene
# データベース名を各自で設定してください
MYSQL_DATABASE: db_local
# データベース接続ユーザ名を各自で設定してください
MYSQL_USER: db_user
# データベース接続パスワードを各自で設定してください
MYSQL_PASSWORD: db_password_kimetene
php:
build: ./
container_name: php
volumes:
- ./php.ini:/usr/local/etc/php/php.ini
- ./:/var/www/html
ports:
- 9080:80
depends_on:
- db
phpmyadmin:
image: phpmyadmin/phpmyadmin:latest
container_name: phpmyadmin
restart: always
depends_on:
- db
ports:
- 9090:80
Dockerfileを作成
Dockerfileを作成して、以下の内容を設定してください。
FROM php:8.2-apache
# Xdebug 環境構築
RUN pecl install xdebug && \
docker-php-ext-enable xdebug
# Docker 公式の Composer イメージ を使用
COPY /usr/bin/composer /usr/bin/composer
# Composer パッケージ管理する為の環境構築
RUN apt-get update && \
apt-get install -y sudo git
# Composerの設定
RUN echo 'export PATH="$PATH:/root/.composer/vendor/bin"' >> /root/.bashrc
# Composerキャッシュのクリア
RUN composer global clear-cache
# php_codesniffer を使うための環境構築
RUN composer global require --no-interaction "squizlabs/php_codesniffer=*" && \
composer require --dev --no-interaction squizlabs/php_codesniffer
Compoerの設定
composer.jsonを作成 (php_codesniffer)
composer.jsonファイルを作成して、必要なパッケージを追加してください。
PHP_CodeSnifferを使用します。
{
"require-dev": {
"squizlabs/php_codesniffer": "^3.7"
}
}
Xdebugの設定
php.iniを作成
php.iniファイルを作成して、Xdebugの設定を追加してください。
[xdebug]
xdebug.client_host = host.docker.internal
xdebug.mode = debug
xdebug.start_with_request = yes
xdebug.discover_client_host = 0
xdebug.remote_handler = "dbgp"
xdebug.client_port = 9003
VSCodeで拡張機能「PHP Debug」をインストール
PHP Debugで検索して、ダウンロードして下さい。
VSCodeで「launch.json」を作成
PHP DebugをインストールしたらVSCodeの左側(サイドバー)にデバッグボタンが出現します。
ボタンを押下して、launch.jsonを作成して下さい。
launch.jsonでxdebugの設定
Dockerで作成した開発コンテナとXdebugを繋げます。設定の詳細はコメントの通りです。
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
// php.iniファイルのxdebug.client_port = 9003 と同じPORTを指定して下さい!
"port": 9003,
// Xdebugが動かなかったら、PATHの設定を見直してみて下さい!
"pathMappings": {
"/var/www/html": "${workspaceRoot}"
// "/var/www/html": "c:/Users/***/***/***/***/***/" 絶対バスで指定したら確実に動きます。
}
}
使い方
Dockerファイルがあるプロジェクトへ移動
- Dockerを起動し、コンテナを作成するコマンドです。
docker-compose up -d
Webサーバが正常に動いているか確認
本プロジェクトのトップページ(index.php)です。
2. 以下のURLでアクセスできます:http://localhost:9080/
phpMyAdminが正常に動いているか確認
3. 以下のURLでアクセスできます:http://localhost:9090/
Dockerコンテナにログイン
- Dockerコンテナに入るコマンドです。
docker container exec -it php bash
Composerでphp_codesnifferをダウンロード
- Composerを使用してパッケージをインストールするコマンドです。
composer install
静的解析(PHP_CodeSniffer)ツールの使用方法
- index.phpをPSR-12に従って静的解析するコマンドです。
./vendor/bin/phpcs --standard=PSR12 ./index.php
Xdebugの使用方法
- VSCodeでデバッグ実行をする手順は以下の通りです。
- index.php ファイルにブレークポイントを設定します。
- VSCodeでデバッグ実行を開始します。
- プラウザからindex.phpにアクセスします。:http://localhost:9080/
Discussion
参考にさせて頂きました。
ありがとうございました!
PHPにpdo_mysqlを追加した方が良いかと思いました。