docker配置centos+宝塔面板+phpstorm-xdebug+postman接口调试记录

1 本机环境

  • mac 10.15.7
  • docker 20.10.5

2 docker配置centos和宝塔面板步骤

1 下载 centos7

docker pull ansible/centos7-ansible

2 新建镜像

docker run -i -t -d --name centos7baota -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 --privileged=true ansible/centos7-ansible

  • baota 为新镜像的名称
  • -p 这些是需要开启的端口
  • 注意: 这里先不要挂载本地,我自己测试一挂载就出错。

3 进入容器并安装宝塔面板

docker exec -it centos7baota /bin/bash

  • 进入之后安装宝塔面板

yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh

  • 之后有一个验证, 如下, 直接 y 继续

Do you want to install Bt-Panel to the /www directory now?(y/n): y

  • 等待安装完成出现以下,说明成功!
网面板地址: http://60.169.128.90:8888/1e7aad20
内网面板地址: http://:8888/1e7aad20
username: fpzcbif9
password: 35495af8

4 将上面地址修改为 http://localhost:8888/1e7aad20/

  • 进入之后,安装所需要的环境
  • nginx
  • php7.2
  • mysql5.6

5 等配置好,再提交镜像,生成新的镜像

docker commit -a "zq" -m "add baota" centos7baota ansible/centos7-ansible/bt

6 根据新生成的镜像 `ansible/centos7-ansible/bt``,来制作容器

docker run -i -t -d --name centos7-baota -p 20:20 -p 21:21 -p 80:80 -p 443:443 -p 888:888 -p 8888:8888 -p 3306:3306 --privileged=true -v ~/Desktop/08-docker/01-www:/www/wwwroot -v ~/Desktop/08-docker/02-mysql:/www/server/data ansible/centos7-ansible/bt

  • c7bt 新容器的名字
  • ~/Desktop/08-docker/01-www 是宿主机的地址,就是我本地的目录
  • /www/wwwroot 是容器中的目录
  • 也挂载了msyql的文件
  • 这里要加上挂载! 注意了!

7 进入新容器,并开启服务

docker exec -it c7bt /bin/bash

  • 开启服务!这步很关键!

/etc/init.d/bt restart

  • 之后根据之前的信息进入面板。
  • 这里需要注意: 进入面板之后手动开启 nginx、php、myslq等的服务!!!

8 上一步中, 每次电脑重启, 都需要手动执行命令, 然后进去宝塔面板依次开启服务, 在 mac 中可以通过快捷指令来实现.

vim ~/.bashrc

alias my-docker='docker start bt && docker exec bt /etc/init.d/bt restart && sleep 1 && docker exec bt /etc/init.d/mysqld restart && docker exec bt /etc/init.d/nginx restart && docker exec bt /etc/init.d/php-fpm-73 restart && docker exec bt /etc/init.d/redis restart'

source ~/.bashrc

命令介绍

docker start bt 开启容器
docker exec bt /etc/init.d/bt restart 宝塔面板重启
sleep 1 1秒后执行, 防止面板未启动
docker exec bt /etc/init.d/mysqld restart 数据库重启
docker exec bt /etc/init.d/nginx restart nginx重启
docker exec bt /etc/init.d/php-fpm-73 restart php 重启
docker exec bt /etc/init.d/redis restart' redis 重启


3 配置phpstorm远程xdebug调试

1 在宝塔面中开启对应 php的扩展

2 在对应php.ini 中加入如下

[XDebug]
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = host.docker.internal
xdebug.remote_port=9000
  • 这几行的作用是:
开启xdebug远程调试
调试方式用dggp
远程地址用host.docker.internal,也就是docker容器所在的主机。如果主机是Linux系统,

host.docker.internal可能用不了,需要改用PHP容器和主机同一虚拟网络下的IP,在主机中用docker network inspect dnmp_default命令可找到,其中dnmp_default是容器的所在的网络。

这里我们没有配置xdebug.remote_port,因为xdebug默认使用9000,与我们FPM一致了,不用再设置。如果FPM使用其他端口,remote_port也要改成相应端口。
  • 注意,php7.3之后的配置有些区别 文档
[XDebug]
xdebug.mode = debug
xdebug.remote_handler = "dbgp"
xdebug.client_host = host.docker.internal
xdebug.client_port = 9013

3 phpstorm 中的配置

docker配置centos+宝塔面板+phpstorm-xdebug+postman接口调试记录_第1张图片

  • 服务器上的绝对地址 这个是手动填写的,我本地是docker配置的宝塔,进入宝塔复制后面的根目录即可。
  • bd.test.com 是我们在宝塔面板中新建的域名,这里需要在本机的 hosts 文件中修改一下 dns.

docker配置centos+宝塔面板+phpstorm-xdebug+postman接口调试记录_第2张图片
docker配置centos+宝塔面板+phpstorm-xdebug+postman接口调试记录_第3张图片

sudo vim /etc/hosts

  • 添加如下

127.0.0.1 bd.test.com

3 vscode中配置

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9002,
            "pathMappings": {
                "/www/wwwroot/bd.test3.com":"${workspaceRoot}"
            }
        },
        {
            "name": "Launch currently open script",
            "type": "php",
            "request": "launch",
            "program": "${file}",
            "cwd": "${fileDirname}",
            "port": 9002
        }
    ]
}
  • 以上 port 要与服务器中php中设置的xdebug.remote_port 一致
  • pathMappingsdocker 中的绝对地址。 后面的 "${workspaceRoot}" 是自己的vscode 中的目录。或者用“/Users/zqmac/Desktop/08-docker/01-www/bd.test3.com” 这里注意,必须是绝对路径。

4 配置postman远程xdebug调试

postman 请求中的 COOKIE 里加入XDEBUG_SESSION=PHPSTORM 则可调起phpstrom的调试功能

在Headers中新增key:COOKIE,Value:XDEBUG_SESSION=PHPSTORM

docker配置centos+宝塔面板+phpstorm-xdebug+postman接口调试记录_第4张图片

XDEBUG_SESSION=PHPSTORM :打开xdebug功能

XDEBUG_PROFILE=XDEBUG_PFOFILER : 打开profile功能

XDEBUG_TRACE=XDEBUG_TRACE :打开trace功能

你可能感兴趣的:(docker,centos,docker,phpstorm)