docker-composeでwordpress nginx mysql phpMyAdmin xdebug環境構築

ファイル構成

今回のファイル構成はこちらになります。

<任意のプロジェクト>

 ├.vscode
│ └launch.json
├wordpress
└infra
   ├docker
   │   ├php
   │ │ └php.ini
   │ └wordpress
   │     └Dockerfile
   └docker-compose.yml

Wordpressフォルダーがローカルの作業ディレクトリとなります。

launch.jsonの中身

{
"version": "0.2.0",
"configurations": [
  {
    "name": "PHP XDebug",
    "type": "php",
    "request": "launch",
    "port": 9002,
    "pathMappings": {
      // {docker上のdocument root}:{ローカルのdocument root}
      "/var/www/html": "${workspaceRoot}/wordpress"
    },
    "ignore": ["**/vendor/**/*.php"]
    "xdebugSettings": {
      "max_children": 128,
      "max_data": 1024,
      "max_depth": 10
    }
  }
]
}

php.iniファイルの中身

zend.exception_ignore_args = off
expose_php = off
max_execution_time = 30
max_input_time = 90
max_input_vars = 1000
upload_max_filesize = 128M
post_max_size = 128M
memory_limit = 1024M
max_file_uploads = 50
error_reporting = E_ALL
display_errors = on
display_startup_errors = on
log_errors = on
error_log = /dev/stderr
default_charset = UTF-8
allow_url_fopen=on

[Date]
date.timezone = "Asia/Tokyo"

[mysqlnd]
mysqlnd.collect_memory_statistics = on

[Assertion]
zend.assertions = 1

[mbstring]
mbstring.language = Japanese

; zend_extensionは環境によって変更する必要がある。
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so

[xdebug]
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host=host.docker.internal
xdebug.remote_port=9002
xdebug.remote_log=/tmp/xdebug.log
xdebug.remote_connect_back = 0

php.iniファイルは各自で変更していただければ良いかと思います。

現在筆者が利用しているものは上記のものとなります。

Dockerfileの中身

FROM wordpress:latest

RUN pecl install xdebug \
&& docker-php-ext-enable xdebug

最新版のワードプレスとxdebugのインストールを行う処理を記述しています。

docker-compose.ymlの中身

version: "3"
services:
mysql:
  image: mysql:5.7
  ports:
    - 3308:3306
  volumes:
    - .mysqldata:/var/lib/mysql
  restart: always
  environment:
    MYSQL_ROOT_PASSWORD: root
    MYSQL_DATABASE: [hoge]
    MYSQL_USER: [hoge]
    MYSQL_PASSWORD: [hoge]

wordpress:
  build: ./docker/wordpress
  volumes:
    - ../wordpress:/var/www/html
    - ./docker/php/php.ini:/usr/local/etc/php/conf.d/php.ini
  restart: always
  depends_on:
    - mysql
  ports:
    - 8082:80
  environment:
    WORDPRESS_DB_HOST: mysql:3306
    WORDPRESS_DB_NAME: [hoge]
    WORDPRESS_DB_USER: [hoge]
    WORDPRESS_DB_PASSWORD: [hoge]

phpmyadmin:
  image: phpmyadmin/phpmyadmin:latest
  environment:
    PMA_HOST: "mysql"
    UPLOAD_LIMIT: 102400000
  restart: always
  ports:
     - 8890:80

ポート番号に関しては(ローカルのポート番号:docker側のポート番号)となっていますのでローカル側のポート番号を任意のものに変更していただければ良いかと思います。

[hoge]の部分は、任意のものに変更してください。

 

下記のコマンドでサーバーを立ち上げます。

$ cd /任意のプロジェクト名/infra
$ docker-compose up -d

上記の通りにファイルを保存した場合

http://localhost:8082

でサーバーにアクセス出来ると思います。

Wordpressの画面が表示されれば成功です。