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/
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 重启
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也要改成相应端口。
[XDebug]
xdebug.mode = debug
xdebug.remote_handler = "dbgp"
xdebug.client_host = host.docker.internal
xdebug.client_port = 9013
3 phpstorm 中的配置
服务器上的绝对地址
这个是手动填写的,我本地是docker配置的宝塔,进入宝塔复制后面的根目录即可。bd.test.com
是我们在宝塔面板中新建的域名,这里需要在本机的 hosts
文件中修改一下 dns.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
一致pathMappings
是 docker
中的绝对地址。 后面的 "${workspaceRoot}"
是自己的vscode 中的目录。或者用“/Users/zqmac/Desktop/08-docker/01-www/bd.test3.com”
这里注意,必须是绝对路径。在 postman
请求中的 COOKIE
里加入XDEBUG_SESSION=PHPSTORM
则可调起phpstrom的调试功能
在Headers中新增key:COOKIE
,Value:XDEBUG_SESSION=PHPSTORM
XDEBUG_SESSION=PHPSTORM :打开xdebug功能
XDEBUG_PROFILE=XDEBUG_PFOFILER : 打开profile功能
XDEBUG_TRACE=XDEBUG_TRACE :打开trace功能