Docker PHP 全能镜像使用指南(二)
php:8.1-allinone 镜像封装了基本能用到的所有扩展 ,内置Nginx,composer,xdebug,git,vim,ohmyzsh,autosuggestion等工具
该镜像主要用于开发阶段 ,如想要构建生产镜像,请移步本系列第一章节:构建PHP全能镜像
拉取镜像
docker pull leon19910505/php:8.1-allinone
支持的扩展列表
基本把PHP下能用到的扩展都按照了,包括一些常用或重量级(安装起来比较难的)扩展: gd,swoole,grpc,protobuf,rdkakfa,xdebug,redis
bcmath Core ctype curl date dom fileinfo filter ftp gd grpc hash iconv imagick json libxml mbstring mcrypt mysqlnd openssl pcre PDO pdo_mysql pdo_pgsql pdo_sqlite Phar posix protobuf rdkafka readline redis Reflection session SimpleXML sodium SPL sqlite3 standard swoole tokenizer uuid xdebug xml xmlreader xmlwriter Zend OPcache zip zlib zookeeper
通过docker-compose 运行你的PHP项目
在你的项目根目录下新建一个docker-compose.yml文件:
version: "3"
services:
php:
image: leon19910505/php:8.1-allinone
restart: always
# /www是一个约定的工作目录,Nginx配置会直接在/www目录加载项目
# 例如挂载的是laravel项目,那就可以直接访问80端口了,无需再配置Nginx
# 如果更换目录,则需要修改容器内 /etc/nginx/http.d/default.conf 文件
volumes:
- "./:/www"
ports:
- "80:80"
打开shell,在项目根目录下运行docker-compose:
docker-compose up -d
docker ps # 查看运行状态
xdebug 断点调试
镜像内的xdebug.ini 配置文件路径:/usr/local/etc/php/conf.d/xdebug.ini
[xdebug]
xdebug.mode = debug
xdebug.client_port = 9000
xdebug.client_host = host.docker.internal
xdebug.idekey = PHPSTORM
xdebug.discover_client_host = no
xdebug.start_with_request = yes
xdebug.log_level = 0
- 打开debug开关,访问首页,会自动唤起phpstorm的debug窗口,点击Accept,如图:
![image-20240125213159953](https://img-blog.csdnimg.cn/img_convert/c3061e7a4cf6e62d36981a608c172567.png)
-
修改路径映射,打开设置,找到servers配置,你会看到上一步操作已经创建了一个名为local.com的server,修改对应路径
-
打断点,重新访问首页,这时xdebug就会正常工作了,如果不生效,重启一下phpstorm的xdebug开关
修改Nginx配置
如果你是laravel,tp 项目,那么只要挂载项目根目录到/www,默认Nginx的配置就可以了,其他框架自由修改 Nginx的配置:/etc/nginx/http.d/default.conf
默认配置:
server {
listen 80;
server_name local.com;
root /www/public;
index index.php;
charset utf-8;
location / {
root /www/public;
if (!-e $request_filename) {
rewrite ^/index.php(.*)$ /index.php?s=$1 last;
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
location ~ .+\.php($|/) {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
主要是修改root路径,可能有些框架的入口文件不在public目录下
内置auto-suggestion
auto-suggestion 是一款自动记录你的命令历史,再根据输入前缀来匹配历史命令的shell增强工具
如图,在键入vim命令时,suggestion会自动弹出之前vim的历史,这时可以再通过上下方向键筛选,通过右方向键选择该命令,这在一些比较长的命令输入场景下非常省力,只要输入过一次,下次就可以自动补全该命令,
![image-20240125211451128](https://img-blog.csdnimg.cn/img_convert/100c3ed012d7264de8d7196f14c8f32e.png)