📜  如何在 docker compose 上运行 xdebug (1)

📅  最后修改于: 2023-12-03 14:52:16.839000             🧑  作者: Mango

在 Docker Compose 上运行 Xdebug

Xdebug 是一种基于 PHP 的调试器,它可以帮助程序员在调试和开发过程中更快速和高效地定位和纠正错误。在 Docker Compose 上使用 Xdebug 可以方便地对多个 PHP 项目进行调试,并且如果需要新建或者更新项目也很容易。

前置条件

在开始之前,需要先确保安装好 Docker 和 Docker Compose,并且有基本的 Docker 和 Docker Compose 使用经验。

配置 Xdebug

以下是配置 Xdebug 的步骤:

  1. 在 PHP 的 php.ini 文件中,添加以下 Xdebug 的配置信息:
[xdebug]
zend_extension=xdebug.so
xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.idekey=PHPSTORM
  1. 重启 PHP-FPM 服务:
# 如果您正在使用的是 PHP-FPM,可以通过以下命令重启服务
$ service php-fpm restart
  1. 打开项目的 Docker Compose 配置文件,配置 PHP 容器相关的变量:
# docker-compose.yml
...
services:
  php:
    build: .
    environment:
      XDEBUG_CONFIG: remote_host=${DOCKER_HOST_IP:-172.17.0.1}
...

environment 部分添加了 XDEBUG_CONFIG 环境变量,在其中设置了 remote_host 的值为 Docker 宿主机的 IP 地址,这里使用了 ${DOCKER_HOST_IP:-172.17.0.1} 这种语法,是为了兼容 Windows 和 Linux 平台获取不同的 IP 地址。

  1. 定义一个可以访问 Xdebug 的容器:
# docker-compose.yml
...
services:
  xdebug:
    build: .
    ports:
      - "9000:9000"
    command: tail -f /dev/null
...

xdebug 中,我们定义了一个与 PHP 容器在同一网络的容器,其中 ports 用于暴露 Xdebug 的端口。

配置 IDE

在配置 IDE 之前,需要先进入 xdebug 容器中:

$ docker-compose run --rm xdebug sh

然后,在容器中编辑 xdebug.ini 文件:

$ vi /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini

添加以下内容:

xdebug.remote_enable=1
xdebug.remote_autostart=1
xdebug.remote_host=xdebug
xdebug.remote_port=9000
xdebug.idekey=PHPSTORM

保存文件并退出。

最后,在 IDE 中添加一个 PHP Remote Debug 配置,配置如下:

  • Name: 可自行命名
  • Server: 配置:Name: xdebug, Host: localhost, Port: 80
  • Debugger: Xdebug
  • IDE Key: PHPSTORM
运行 Xdebug

配置完成后,可以使用以下命令启动 Docker Compose 服务以运行 Xdebug:

$ docker-compose up -d

此时,您就可以在 IDE 中开启断点,对 PHP 项目进行远程调试了!

参考链接: