参考 Windows 10 下使用 PHPStorm 开发/调试, Docker + Swoole + XDebug + Hyperf
1、docker安装php环境及扩展swoole,yasd
FROM php:8.0.26-fpm-alpine
ARG PEAR_DOWNLOAD_DIR=/tmp/pear/download/
#须先将需要的扩展下载到ext文件夹中
COPY ext/* ${PEAR_DOWNLOAD_DIR}
RUN set -ex \
&& sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories \
#&& pecl channel-update pecl.php.net \
&& apk add --no-cache autoconf gcc g++ make libc-dev automake libffi-dev openssl-dev libxpm-dev zlib-dev libzip-dev libmcrypt-dev unzip curl-dev c-ares-dev git\
&& apk add --no-cache libpng-dev freetype-dev libjpeg-turbo-dev libwebp-dev \
&& pecl install -D 'enable-sockets="no" enable-openssl="yes" enable-http2="yes" enable-mysqlnd="yes" enable-swoole-json="no" enable-swoole-curl="yes" enable-cares="yes"' ${PEAR_DOWNLOAD_DIR}swoole-4.8.12.tgz \
&& pecl install ${PEAR_DOWNLOAD_DIR}redis-5.3.7.tgz \
&& docker-php-ext-enable redis swoole \
&& echo "swoole.use_shortname = 'Off'" >> /usr/local/etc/php/conf.d/docker-php-ext-swoole.ini \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install gd \
&& docker-php-ext-install pdo_mysql \
&& docker-php-ext-install bcmath \
&& docker-php-ext-install pcntl \
&& docker-php-ext-install sockets \
&& docker-php-ext-install zip \
&& docker-php-ext-enable opcache \
&& cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini \
#移除无用安装包
#&& apk del gcc g++ make automake autoconf \
#phpize 命令不存在时安装phpize \
# yum install php-devel ## centos
# sudo apt-get install php-dev ## ubuntu
# apk add php-dev ## debain
# 安装调试工具 ysad \
&& apk add boost-dev openssh-server \
#&& git clone https://github.com/swoole/yasd.git /tmp/yasd \
#&& cd /tmp/yasd \
&& cd /tmp/pear/download \
&& unzip yasd.zip \
&& cd /tmp/pear/download/yasd \
&& phpize --clean \
&& phpize \
&& ./configure \
&& make clean && make && make install \
&& docker-php-ext-enable yasd \
&& echo "yasd.debug_mode=remote" >> /usr/local/etc/php/conf.d/docker-php-ext-yasd.ini \
&& echo "yasd.remote_host=host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-yasd.ini \
&& echo "yasd.remote_port=9100" >> /usr/local/etc/php/conf.d/docker-php-ext-yasd.ini \
&& echo "yasd.open_extended_info=1" >> /usr/local/etc/php/conf.d/docker-php-ext-yasd.ini \
&& echo "yasd.log_level=0" >> /usr/local/etc/php/conf.d/docker-php-ext-yasd.ini \
#phpstorm调试需要用到 PHP_IDE_CONFIG 配置以映射本地文件 serverName=设置》php>服务器(设置的服务器名)
&& export PHP_IDE_CONFIG="serverName=myserver" \
# 全局安装 composer 并更换源地址
&& php -r "copy('https://install.phpcomposer.com/installer', 'composer-setup.php');" \
&& php composer-setup.php \
&& php -r "unlink('composer-setup.php');" \
&& mv composer.phar /usr/local/bin/composer \
&& echo "export COMPOSER_ALLOW_SUPERUSER=1" >> /etc/profile \
&& source /etc/profile \
&& composer config -g repo.packagist composer https://packagist.phpcomposer.com
EXPOSE 9000 9501 9502 9503
#创建容器网络
docker network create -d bridge lnmp-net
#运行php容器
docker run -v F:\WWW:/var/www/html:cached --network=lnmp-net -p 9000:9000 -p 9501:9501 -p 9502:9502 -p 9503:9503 --name lnmp-php8.0 -d yogawang/myphp:8.0.26-fpm-alpine
2、进入docker添加环境变量PHP_IDE_CONFIG
export PHP_IDE_CONFIG="serverName=myserver"
3、配置PhpStorm调试设置
phpstom调试端口 和 和yasd.remote_port中的一致
4、phpstorm服务器代码映射
这里的名称myserver和前面第2步的环境变量PHP_IDE_CONFIG一致
5、开启服务调试
#-e为yasd必备参数
php -e ./bin/hyerf.php start
如果开启时有报错说ide拒绝连接,可以重启电脑试试
有配置首行中断时出现按F9跳过后出现已连接
到这里就连接上可以开始调试了
要注意的是打断点的位置需要在/runtime/container/proxy/下的文件中
hyperf真正运行的代码就是在proxy.php里