(开包即用,不用看代码!)Windows下NetBeans调试Docker中nginx+PHP-fpm路由的八种配置以及两种控制台配置两种DotNet配置
准备环境带有PowerShell的Windows操作系统,测试环境为Windows 10,其他版本没有测试过。Windows上安装有Dockerdocker-machine命令能找到一台运行中的Docker主机Docker主机不限于Windows上的虚拟机中安装,但是应当处于相同子网中。Windows上安装有NetBeans准备程序启动PowerShell进入一个文件夹下载项目代码git
准备环境
- 带有
PowerShell
的Windows
操作系统,测试环境为Windows 10
,其他版本没有测试过。 Windows
上安装有Docker
docker-machine
命令能找到一台运行中的Docker
主机Docker
主机不限于Windows
上的虚拟机中安装,但是应当处于相同子网中。Windows
上安装有NetBeans
准备程序
启动PowerShell
进入一个文件夹
下载项目代码
git clone https://github.com/huzhenghui/Netbeans-Xdebug-PHP-fpm-in-Docker-by-Windows-share-folder.git
进入项目文件夹
cd Netbeans-Xdebug-PHP-fpm-in-Docker-by-Windows-share-folder
更新子模块代码
git submodule update --init
设置共享到Docker
的Volume
卷名称,应当注意避免和Docker
上已有的卷名冲突
$env:VOLUME_NAME="Netbeans-Xdebug-PHP-fpm-in-Docker-by-Windows-share-folder"
使用脚本把Windows
文件夹共享到Docker
,脚本具体执行过程详见源代码。
.\share-windows-folder-to-docker\share-windows-folder-to-docker.ps1 -workingDir . -volumeName ${env:VOLUME_NAME}
测试共享效果
docker run --rm -v ${env:VOLUME_NAME}:/share alpine ls /share
共享成功将能看到Windows
项目文件夹的内容
八种NetBeans
、Xdebug
、nginx
、PHP-fpm
、PHP路由
的排列组合配置
NetBeans Xdebug | nginx PHP-fpm | PHP路由 | 命令 |
---|---|---|---|
不需要 | 不需要 | 不需要 | docker-compose-f docker-compose.php.yml up |
不需要 | 不需要 | 需要 | docker-compose-f docker-compose.php.route.yml up |
不需要 | 需要 | 不需要 | docker-compose-f docker-compose.nginx.php-fpm.yml up |
不需要 | 需要 | 需要 | docker-compose -f docker-compose.nginx.php-fpm.route.yml up |
需要 | 不需要 | 不需要 | docker-compose-f docker-compose.php.xdebug.yml up |
需要 | 不需要 | 需要 | docker-compose -f docker-compose.php.xdebug.route.yml up |
需要 | 需要 | 不需要 | docker-compose -f docker-compose.nginx.php-fpm.xdebug.yml up |
需要 | 需要 | 需要 | docker-compose -f docker-compose.nginx.php-fpm.xdebug.route.yml up |
两种PHP
控制台配置
启动PHP
控制台程序的命令
docker-compose -f docker-compose.php.console.yml up
使用NetBeans
通过Xdebug
调试PHP
控制台程序和调试网站不同,调试网站可以使用xdebug.remote_connect_back
配置,由NetBeans
通过访问网站启动Xdebug
,Xdebug
可以藉此发现NetBeans
监听的IP
地址,而PHP
控制台程序没有这样的过程,因此需要先获知NetBeans
所在的电脑上和Xdebug
通讯的IP
地址,本例中使用脚本获取。
$env:REMOTE_HOST=$(docker-machine ssh $env:DOCKER_MACHINE_NAME 'tty=$(tty | cut -c 6-); w -i | grep $tty | awk ''{print $3;}''')
启动带有XDebug
的PHP
控制台程序的命令
docker-compose -f docker-compose.php.console.xdebug.yml up
两种PHP for DotNet配置
启动PHP
for DotNet
控制台的命令
docker-compose -f docker-compose.php.net.console.yml up
启动PHP
for DotNet
网站的命令
docker-compose -f docker-compose.php.net.web.yml up
方案特点
- 本例的方案中
NetBeans
所调试的代码借助Windows
共享文件夹共享到Docker
中,因此运行环境和开发环境是相同的文件,便于即时修改,即时调试。 - 本例中共12种配置都是基于一套
PHP
代码,可以按需自由切换配置,例如运行时使用不包含Xdebug
的配置,而调试时只需要切换启动命令即可。
注意
按需调整
Windows
上的防火墙配置,保证共享文件夹访问,保证NetBeans
可以启动监听端口,默认为9000
。NetBeans
启动调试后,有时候可能不能正确绑定Windows
的监听端口,此时可以使用如下命令查询:netstat -ano | Select-String -Pattern '9000'
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)