PHPSTORM中怎么调试Docker项目
这篇文章给大家介绍中怎么调试项目,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
基本用法
首先要知道 最基本的两样东西:image和
image 镜像,搭建一个 环境最基本的就是 image。可以简单理解为这就是创建虚拟机的那个镜像。
容器。即 依据 image,创建出来的虚拟环境。可以简单理解为就是运行着的虚拟机
的配置文件为 。该文件内容为构建 的命令。基本命令有:
FROM 设置 运行在哪个 image 上。必须写在 的开头。可以在 Hub里找适合的 image。
RUN 在 image build时执行命令。一般用于安装环境
CMD 在 刚启动时执行命令。一般用于启动服务
COPY 将宿主机的文件拷贝到 中
设置工作目录。所有命令都会在这个目录的基础上进行工作
了解了上面的三个命令后,我们可以来简单写一个 了。
#基础 image 为 php:7.3-apache FROM php:7.3-apache #安装 xdebug 扩展 并开启 RUN pecl install xdebug && docker-php-ext-enable xdebug #将 宿主机的 phpinfo.php 拷贝到 container /var/www/html/phpinfo.php 中 COPY ./phpinfo.php /var/www/html/phpinfo.php
写完后在 的目录里运行
docker build -t test/testmyphp .
等命令跑完,输入以下命令即可看到创建好的 image
$ docker image ls REPOSITORY TAG IMAGE ID ...... test/testmyphp latest 4931b92274f2 ......
要想让 运行起来PHPSTORM中怎么调试Docker项目,使用如下命令。使用-p来指定映射端口,左边是宿舍机端口,右边是 端口
docker run -p 81:80 test/testmyphp
查看运行中的
$ docker container ls CONTAINER ID IMAGE PORTS ...... 10b8c28b2f69 test/testmyphp 0.0.0.0:81->80/tcp ......
进入 的 shell
$ docker exec -it CONTAINER_ID值 bash root@10b8c28b2f69:/var/www/html#
至此,基本的 环境我们就建好了。接下来研究下如何让 调试 项目
调试方式一 – 挂载调试
这里做测试使用前文的 ,需要按照实际情况进行配置添加。
配置
#基础 image 为 php:7.3-apache FROM php:7.3-apache #安装 xdebug 扩展 并开启 RUN pecl install xdebug && docker-php-ext-enable xdebug # !!! 使用一个启动脚本来启动服务 !!! COPY ./start.sh /start.sh RUN chmod +x /start.sh CMD ["/start.sh"]
start.sh 内容
#配置 Xdebug echo "xdebug.client_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini echo "xdebug.client_port = 9003" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini echo "xdebug.mode = debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini echo "xdebug.max_nesting_level = 1000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini echo "xdebug.discover_client_host = true" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini #重启 apache ssh service apache2 restart
重建 image:
#最好先删掉之前的再重建 docker image rm IMAGE值 -f docker build -t test/testmyphp .
重建完先不急着跑 。先定位到我们的项目代码位置
使用 的 Bind 技术。将宿主机的项目目录映射到 的网站目录下
docker run -p 81:80 --mount type=bind,source=/home/xp/test_docker/test_program,target=/var/www/html test/testmyphp
至此,调试环境所需要的服务就安装好了,接下来配置 。
配置

直接使用Open打开项目
配置 目录映射
进入 File -> -> & -> PHP -> 。配置目录映射
注意一定要把 Use path 的勾勾上,才能配置目录映射
path on the 是要手动打上服务器路径的
设置端口
进入 File -> -> & -> PHP -> Debug。设置 Debug port 为 9003。和 php 配置一致。
配置一个 Run/Debug
点击 右上角的 Add ….。进入配置面phpstorm调试phpPHPSTORM中怎么调试Docker项目,新增一个 PHP Web Page。并进行如下简单的配置即可(改名字设url 路径)
启动 PHP Debug
直接点击 右上角的 小电话 ,即可开启监听
验证
在 php文件上打上断点,点击 右上角 甲壳虫样式的 Debug按钮。即可成功断点
调试方式二 – ssh 隧道
这种方式不仅仅可以用在 环境上,同样可以用在 远程服务器上。缺点就是要在 里头安装许多额外服务。
配置
安装ssh服务。 需要 ssh 来进行目录映射,不然无法成功 Debug
安装 。这是调试的基础扩展组件
设置 ssh 允许 root 登陆。毕竟只是个 调试环境,就不弄那么麻烦了。当然如果是线上业务啥的当然要做好权限分配。
修改 root密码。毕竟不知道密码也无法连接
启动 ssh 服务
重启 服务
这里做测试使用前文的 ,需要按照实际情况进行配置添加。
修改前文的 。
#基础 image 为 php:7.3-apache FROM php:7.3-apache ENV APACHE_DOCUMENT_ROOT /var/www/html #安装 ssh 服务 RUN apt-get update && apt-get install ssh -y #安装 xdebug 扩展 并开启 RUN pecl install xdebug && docker-php-ext-enable xdebug #将宿主机的 phpinfo.php 拷贝到 container /var/www/html/phpinfo.php 中 COPY ./phpinfo.php /var/www/html/phpinfo.php # !!! 使用一个启动脚本来完成流程 3 4 5 的工作 !!! COPY ./start.sh /start.sh RUN chmod +x /start.sh CMD ["/start.sh"]
start.sh 内容
#!/bin/bash #设置 ssh 允许 root 登录 echo 'PermitRootLogin yes' >> /etc/ssh/sshd_config #修改root密码 echo root:123456 | chpasswd #配置 Xdebug。Xdebug 3 的配置如下,和 Xdebug 2不太一样 echo "xdebug.client_host = host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini echo "xdebug.client_port = 9003" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini echo "xdebug.mode = debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini echo "xdebug.max_nesting_level = 1000" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini echo "xdebug.discover_client_host = true" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini #重启 apache ssh service apache2 restart service ssh restart #要加上这个,不然 container 运行完就停止了。 sleep infinity
重建 image:
#最好先删掉之前的再重建 docker image rm IMAGE值 -f docker build -t test/testmyphp .
启动 :
docker run -p 81:80 -p 2222:22 test/testmyphp
至此,调试环境所需要的服务就安装好了,接下来配置 。
配置
打开 ,新建一个 。选择 New from Files
选择 Web is on host。
一路 Next。走到配置
然后又是一路 Next 即可。
配置完成后,将能看到我们的项目。

此时是不能直接进行代码调试的。我们要做以下工作
配置 CLI
配置目录映射
设置端口
配置一个 Run/Debug
启动 PHP Debug
ps:由于有些步骤是一样的,就直接拉上文的截图过来了。
配置 CLI
进入 File -> -> & -> PHP。设置 CLI
新建一个 CLI 。选择 From , , VM, WSL,….
这里我们可以填 SSH,也可以直接选择 。我这里用的是 SSH
设置 PHP 路径。不知道可以进入 中使用 php进行搜索
配置 目录映射
进入 File -> -> & -> PHP -> 。配置目录映射
注意一定要把 Use path 的勾勾上phpstorm调试php,才能配置目录映射
path on the 是要手动打上服务器路径的
设置端口
进入 File -> -> & -> PHP -> Debug。设置 Debug port 为 9003。和 php 配置一致。
配置一个 Run/Debug
点击 右上角的 Add ….。进入配置面,新增一个 PHP Web Page。并进行如下简单的配置即可(改名字设url 路径)
启动 PHP Debug
直接点击 右上角的 小电话 ,即可开启监听
验证
在 php文件上打上断点,点击 右上角 甲壳虫样式的 Debug按钮。即可成功断点
扩展 – 远程服务器调试
这里可以扩展以一下,如果调试目标是远程服务器而不是本地 ,该如何配置?
其实和上面的步骤一样的,只是 监听的流量我们要做修改下。
简单说说 监听的原理:
当 php- 接收到带有 的请求时,将会把当前的 Debug信 息发送给 中配置的 和 。
在我们的 start.sh 启动文件中,设置如下:
xdebug.client_host = host.docker.internal xdebug.client_port = 9003
host..值在 中是自动将请求端的 ip 设置为 调试端,即自动将 Debug信息 发送给任何请求IP。
而.的值是 Debug信息 被发送至的端口。
我们可以想下phpstorm调试php,在本地,端是能访问到到我们请求端的 ip 和 端口 的,因为都是同一局域网。
但若调试的是远程服务器,由于公网和内网的原因,公网服务器是无法发送 Debug信息 调试端的(除非调试端也在公网上。。)
所以我们需要将.设置为127.0.0.1,让 转发 Debug信息 到本地的 9003 端口中。
接着使用 ssh 隧道进行端口转发,把调试端监听的 9003 端口映射到 服务端的 9003 上。这样就能接收到 转发的 Debug信息了。这一点使用 ssh 隧道是可以做到的。
我们来测试下,首先修改 php.ini。让.值为127.0.0.1
1. 本站所有资源来源于用户上传和网络,如有侵权请联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系站长处理!
6. 本站不售卖代码,资源标价只是站长收集整理的辛苦费!如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
7. 站长QQ号码 2205675299
资源库 - 资源分享下载网 » PHPSTORM中怎么调试Docker项目
常见问题FAQ
- 关于资源售价和售后服务的说明?
- 代码有没有售后服务和技术支持?
- 有没有搭建服务?
- 链接地址失效了怎么办?
- 关于解压密码

