Dockerの設定
最初はDockerComposeの設定から。
今回はこんなファイル構成で作ります。
docker-compose.ymlhtdocs└ publicdocker-compose├ php│ ├ Dockerfile│ ├ 000-default.conf│ └ php.ini└ mysql ├ initdb.d │ └ 000-default.conf ├ Dockerfile └ my.cfnversion: "3"
services: web: container_name: test_php build: context: ./docker-compose/php ports: - 8080:80 volumes: - ./htdocs:/var/www/html restart: always db: container_name: test_mysql build: context: ./docker-compose/mysql volumes: - ./docker-compose/mysql/initdb.d:/docker-entrypoint-initdb.d - test_mysqlvol:/var/lib/mysql environment: MYSQL_ROOT_PASSWORD: password TZ: "Asia/Tokyo" command: --default-authentication-plugin=mysql_native_password ports: - 3306:3306 restart: always volumes: test_mysqlvol:phpのDockerfileはComposerとかXdebugとかと使えるようにします。
FROM php:8-apacheCOPY php.ini /usr/local/etc/php/COPY *.conf /etc/apache2/sites-enabled/
RUN apt-get update \ && apt-get install -y libzip-dev unzip \ && docker-php-ext-install zip pdo_mysql mysqli \ && docker-php-ext-enable mysqli \ && a2enmod rewrite \ && pecl install xdebug \ && docker-php-ext-enable xdebug
COPY --from=composer /usr/bin/composer /usr/bin/composerENV COMPOSER_ALLOW_SUPERUSER 1ENV COMPOSER_HOME /composer何かしらフレームワークを使う場合ドキュメントルートを変更する必要があると思いますが、その時は下記ファイルを作ります。
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html/public
<Directory /var/www/html/public> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined</VirtualHost>php.iniにxdebugを追加します。
その他の設定は必要に応じて追加してください。
# ...
[xdebug]xdebug.client_host = host.docker.internalxdebug.client_port = 9003xdebug.idekey = PHPSTORMxdebug.mode = debugxdebug.start_with_request = yes次はMySQLのDockerfile。
設定ファイルの追加とか権限とか。
FROM mysql:8ADD my.cnf /etc/mysql/conf.d/my.cnfRUN chmod 644 /etc/mysql/conf.d/my.cnfmy.cnfで文字コードの設定とかしておきます。
[mysqld]character-set-server=utf8mb4collation-server=utf8mb4_unicode_ci
[client]default-character-set=utf8mb4コンテナー構築時にDBにテーブルとか作りたい場合は下記に作ります。
CREATE DATABASE IF NOT EXISTS dbname;CREATE DATABASE IF NOT EXISTS dbname_test;全部できたらコンテナーを構築しましょう。
$ docker-compose up -dPhpStormでDcokerの設定
環境設定のDocker設定画面の設定をします。
Docker Desctop Macを使用している場合はDocker for Macをチェック。
次はPHPの設定項目
最初はCLIインタープリターはの選択はできない状態だと思うので、左の「…」でポップアップを表示して、「From Docker…」を選択する。
CLIインタープリターポップアップが表示されるので下記のように設定。
PHPのサーバー設定項目
PHPのデバッグ設定項目
おそらく変更に必要はないはず。
XDebugを使う
右上のセレクトボックスから「実行構成の編集…」を選択。
左上の「+」ボタンから「PHPリモートデバッグ」を選択して次のように設定。
デバッグボタンとリッスンボタンをアクティブにする。
あとはデバッグしたい行の左をクリックして赤丸状態にして、ブラウザでアクセスするとデバッグできる。
PHPUnitを使う
Composerでインストールしますが、Dcokerの場合コンテナに入ってインストールします。
PhpStormでは「サービス」のコンテナ名を右クリックして「ターミナルを作成」でコンテナでコマンド叩くことができます。
ターミナルを開いたら下記を実行してインストール。
$ composer require phpunit/phpunit --devPHPのテストフレームワーク設定項目画面で、「+」をクリックして、「リモートインタープリターによるPHPUnit」を選択。
設定は次のようにする。
設定ファイル(phpunit.xml)はtestsディレクトリにテストコードを入れるので次のようにしました。
<?xml version="1.0"?><phpunit> <testsuite name="Application Test"> <directory>./tests/</directory> </testsuite></phpunit>あとは作成したテストファイルを右クリックメニューから「実行」でテストできる。














