首先推薦安裝vscode的php擴(kuò)展包怖喻,這里推薦phptools這個(gè)擴(kuò)展,它包含了從調(diào)試活逆,測(cè)試拐袜,到格式化膀估,自動(dòng)補(bǔ)全一些列功能棠众。
xdebug
xdebug 是一個(gè)php的擴(kuò)展撰豺,它可以幫助我們調(diào)試php粪般,我們可以在初始化php容器的時(shí)候,直接安裝它污桦。
這里需要注意的是xdebug的版本亩歹,主要是2和3的版本,不同版本的xdebug配置會(huì)有一些不同凡橱。
Dockerfiles
首先我們需要?jiǎng)?chuàng)建php容器的Dockerfile文件小作,文件內(nèi)容如下:
FROM php:fpm
RUN pecl install xdebug
RUN docker-php-ext-enable xdebug
nginx
這里我們使用nginx作為服務(wù)器,它的Dockerfile文件如下:
FROM nginx:alpine
COPY nginx/default.conf /etc/nginx/conf.d
nginx 默認(rèn)的default.conf 內(nèi)容:
server {
listen 0.0.0.0:80;
root /var/www/html;
location / {
index index.php index.html;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
}
docker-compose
接下來(lái)我們創(chuàng)建一個(gè)docker-compose.yml來(lái)管理php和nginx兩個(gè)容器稼钩。
version: "3"
services:
nginx:
build:
context: .
dockerfile: nginx/Dockerfile
ports:
- "8080:80"
networks:
- internal
volumes:
- ./data/:/var/www/html
php:
build:
context: .
dockerfile: php/Dockerfile
networks:
- internal
environment:
XDEBUG_MODE: debug
XDEBUG_CONFIG: client_host=host.docker.internal client_port=9003
volumes:
- ./data/:/var/www/html
networks:
internal:
driver: bridge
在這里顾稀,我們通過(guò)environment來(lái)配置php的參數(shù),配置xdebug相關(guān)信息坝撑。
最后
啟動(dòng)docker-compose 静秆,訪問(wèn)localhost:8080 可以訪問(wèn)php首頁(yè)。
在vscode中創(chuàng)建一個(gè)launch.json配置文件绍载,用來(lái)配置調(diào)試信息诡宗。
配置信息如下:
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"pathMappings": {
"/var/www/html": "${workspaceFolder}/data"
},
通過(guò)listen for xdebug啟動(dòng)監(jiān)聽,在瀏覽器中訪問(wèn) http://localhost:8080?XDEBUG_SESSION_START=1
就可以監(jiān)聽到調(diào)試击儡,其中XDEBUG_SESSION_START參數(shù)是用來(lái)告訴告訴xdebug調(diào)試這個(gè)請(qǐng)求塔沃。(貌似不加這個(gè)參數(shù)也可以)