条件准备:在php的dockerfile中已安装xdebug3,nginx是已有镜像。
docker-compose 配置路径如下
├── Dockerfile
├── docker-compose.yml
├── nginx-configs
│ ├── conf.d
│ │ ├── test.inner.conf
│ └── nginx.conf
└── php-configs
└── docker-php-ext-xdebug.ini
运行php环境:docker-compose up -d
docker-compose.yml 配置文件
version: '3'
services:
php:
build: .
container_name: php-dev
restart: always
networks:
- dev-network
ports:
- "9000:9000"
volumes:
- /Users/qinyongbo/code/qn:/data/code/qn
- ./php-configs/docker-php-ext-xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
command:
- php-fpm
nginx:
container_name: nginx-dev
image: "registry.cn-shenzhen.aliyuncs.com/image/nginx:1.17.9-test-service-20201123"
restart: always
networks:
- dev-network
ports:
- "80:80"
volumes:
- /Users/qinyongbo/code/qn:/data/code/qn
- ./nginx-configs/nginx.conf:/etc/nginx/nginx.conf
- ./nginx-configs/conf.d:/etc/nginx/conf.d
networks:
dev-network:
external: true
docker-php-ext-xdebug.ini
[xdebug]
zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
xdebug.mode=debug
xdebug.start_with_request=yes
#本机ip,因为docker在mac中不能使用host网络模式,故这里不能用localhost
xdebug.client_host=192.168.10.89
#本机端口
xdebug.client_port=9003
xdebug.idekey = PHPSTORM
以上镜像相关的已准备完成,接下来是PhpStorm配置,选择Languages & Frameworks》PHP
image.png如果没有CLI interpreter ,那么就新建一个,点击左上角+,选择Docker
image.png在Server中点击New一个
image.png新建Server过程中,Path mappings配置需要选择docker中路径和本机路径匹配。
image.png
点击Configuration File(s),选择docker-compose.yml配置文件,service选择对应的php服务名字。
到此CLI interpreter 添加成功。
添加Servers
image.png
开启xdebug 监听,默认监听端口为9003
image.png
测试curl http://test.example.com/Index/index,请求一直loading,代码进入调试模式
以上http请求模式完成,那CLI模式怎么弄呢?
在docker中执行
export XDEBUG_CONFIG="xdebug.mode=debug xdebug.start_with_request=yes xdebug.client_host=192.168.2.159 xdebug.client_port=9003 xdebug.idekey = PHPSTORM"
export PHP_IDE_CONFIG="serverName=DomainName"
执行:php path/index.php,就发现IDE中有debug在运行。
网友评论