polidog lab

Top About Rss
2021年09月16日

Docker環境でphp8 + xdebug3を設定する

Docker composeでそれっぽい環境を用意して、xdebug動かしてみたよって話です。

目次

  1. docker-composeの定義
  2. php用のdocker fileの設定
  3. xdebug3用にphp.iniを書く
  4. PHPStormの設定

docker-composeの定義

こんな感じです。

version: "3"

volumes:
  db-store:

services:
  db:
    image: postgres:11
    volumes:
      - db-store:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: root
      POSTGRES_PASSWORD: root
      POSTGRES_INITDB_ARGS: "--encoding=UTF-8"
      TZ: "Asia/Tokyo"
    ports:
      - 5432:5432
  php:
    build:
      context: ./docker/php/
      dockerfile: Dockerfile
    volumes:
      - ./:/app:cached
    depends_on:
      - db
  web:
    image: nginx:alpine
    ports:
      - 80:80
    depends_on:
      - php
    volumes:
      - ./:/app:cached
      - ./var/log/nginx:/var/log/nginx/
      - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
      - /app/.git
      - /app/.data
      - /app/docker

php用のdocker fileの設定

FROM php:8.0-fpm

RUN apt-get update \
  && apt-get install -y zlib1g-dev mariadb-client libzip-dev libpq-dev \
  && docker-php-ext-install zip pdo_pgsql \
  && pecl install xdebug \
  && docker-php-ext-enable xdebug

COPY php.ini /usr/local/etc/php/

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

WORKDIR /app

xdebug3用にphp.iniを書く

こんな感じで、xdebug3だと結構2とは設定が変わってます。

[xdebug]
xdebug.mode=debug
xdebug.start_with_request=yes
xdebug.client_host=host.docker.internal
xdebug.log=/tmp/xdebug.log
xdebug.client_port=9200

PHPStormの設定

Setting -> PHP -> DebugのDebug Portに9200を設定する

Setting -> PHP -> Serversでlocalhost, 80, でProject FilesのAbsolute path on the serverパスに /app を設定する

参考

PhpStormとXdebugでステップ実行 ①ステップ実行するための設定

comments powered by Disqus