新闻中心
如何在Docker中配置PHP开发热重载的详细教程?
通过配置Docker的Volume挂载、inotify监听、Swoole热重载、Webpack Encore及Lar*el Sail,可实现PHP开发中代码修改后自动刷新,提升开发效率。

如果您正在使用Docker进行PHP开发,但每次代码更改都需要重启容器才能生效,这会严重影响开发效率。通过配置热重载机制,可以在文件变更时自动刷新服务或重新加载PHP进程,从而实现即时反馈。以下是实现该功能的具体方法。
本文运行环境:MacBook Pro,macOS Sonoma
一、使用Volume挂载实现代码同步
通过Docker的bind mount功能,将本地开发目录挂载到容器内的项目路径,使得本地文件的修改能实时反映在容器中。
1、在项目根目录创建 docker-compose.yml 文件,并添加如下内容:
version: '3.8'
services:
php:
image: php:8.2-fpm
volumes:
- ./:/var/www/html
2、保存文件后,在终端执行 docker-compose up -d 启动容器。
3、修改本地PHP文件并保存,进入容器内部验证文件是否同步更新。
二、结合inotify实现PHP-FPM自动重载
利用inotify监听文件变化,并触发PHP-FPM进程重启,确保配置或代码变更立即生效。
1、修改Docker镜像的Dockerfile,安装inotify-tools工具包:
FROM php:8.2-fpm
RUN apt-get update && apt-get install -y inotify-tools
2、创建一个监控脚本 watch.sh,内容如下:
#!/bin/bash
inotifywait -m -r -e modify,create,delete /var/www/html --format '%f' | while read file; do
echo "File $file changed, reloading PHP-FPM..."
kill -USR2 1
done
3、赋予脚本可执行权限:chmod +x watch.sh,并在容器启动时运行该脚本。

千鹿Pr助手
智能Pr插件,融入众多AI功能和海量素材
128
查看详情
三、使用Swoole Server实现原生热重载
Swoole内置了热重载支持,可通过其Server组件监听文件变化并自动重启工作进程。
1、在容器中安装Swoole扩展:
docker-php-ext-install swoole
2、编写基于Swoole的HTTP服务启动脚本 server.php:
$server = new Swoole\HTTP\Server("0.0.0.0", 9501);
$server->set(['enable_reload' => true, 'worker_num' => 1]);
3、设置环境变量启用文件监听:export INOTIFY_ENABLE=1,然后启动服务:php server.php。
四、集成Symfony Webpack Encore与Docker
针对前端资源配合PHP开发的情况,可使用Webpack Encore监听静态资源变化并自动编译输出。
1、在项目中初始化Encore:
composer require symfony/webpack-encore-bundle
yarn install --force
2、启用开发模式监听:
docker-compose exec php yarn dev-server --hot --host 0.0.0.0 --port 8080 --public http://localhost:8080
3、在浏览器中访问 http://localhost:8080 查看实时更新的前端页面。
五、使用Lar*el Sail配置热重载
Lar*el Sail是官方推荐的Docker开发环境,天然支持部分热重载功能。
1、在Lar*el项目中启用Sail:
php artisan sail:install
2、启动服务并开启Tinker或队列监听:
sail up -d
sail artisan tinker
3、对于视图或配置变更,可结合 cache:clear 命令手动刷新缓存以达到近似热重载效果。
以上就是如何在Docker中配置PHP开发热重载的详细教程?的详细内容,更多请关注php中文网其它相关文章!
# 如果您
# google可以允许seo吗
# 苏州网站优化推广电话
# 广东省汕头市网站优化
# 东城视频营销推广渠道
# 三下乡营销推广构架图
# 长春网站推广模板优化
# 便宜又好的网站建设推荐
# 望城金海网站建设费用
# 巫溪专业网站建设
# 张家界网站优化外包报价
# 镜像
# 解决问题
# 中文网
# 相关文章
# 并在
# php环境搭建
# 运行环境
# 上为
# 如何在
# 重启
# m
# 工具
# macbook
# 浏览器
# composer
# docker
# 前端
# html
# laravel
# php
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
拷贝漫画电脑版官网入口 拷贝漫画(PC版)在线直达
如何在 Excel Online 和 Google 表格中更改日期格式
C++如何使用AddressSanitizer(ASan)_C++调试工具中检测内存访问错误的利器
微信怎么把收藏的内容分类管理 微信收藏内容标签分类方法
小红书怎么解除第三方平台绑定_小红书多平台登录解绑方法介绍
iwriter统一登录平台 iwrite账号密码登录页面
QQ邮箱官方网页版登录 QQ邮箱个人邮箱快速访问
J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析
抖音网页版平台入口 抖音网页版官网在线访问教程
AO3镜像入口大全 AO3网页版内容访问全集
Lar*el表单中优雅地处理“返回”按钮以规避验证:最佳实践指南
一加手机电池耗电快怎么办_一加手机电池耗电快的解决方法
《噬血代码2》新预告片发布 展示游戏剧情
汽水音乐网页版使用入口_汽水音乐电脑版播放指南
C#中解析不规范的HTML为XML 常见的坑与解决办法
《刺客信条:影》PS5 Pro和Switch 2画面对比
处理嵌套交互式控件:前端可访问性指南
React Hooks最佳实践:动态组件状态管理的组件化方案
qq游戏免费畅玩入口_qq游戏电脑版快速启动
实现全屏滚动与导航点:专业教程
Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口
TikTok网页版直接登录 TikTok网页端官方平台入口
顺丰快件物流信息 官方网站查询入口
邮政编码查询不到怎么办_邮政编码查询不到的常见原因与对策
Golang如何实现状态模式管理对象状态_Golang State模式实现技巧
Golang并发任务中错误如何聚合_Golang goroutine error收集方式
服务端验证_j*ascript输入检查
在Typer应用中优雅地处理和重组任意命令行参数
Lar*el Form Request中唯一性验证在更新操作中的正确实现
163邮箱注册官网 免费申请163个人邮箱
QQ邮箱在线登录平台 QQ邮箱个人邮箱网页版入口
C++ vector二维数组定义_C++ vector of vector用法
msn官网入口地址手机版 msn官方网站手机最新链接
Safari浏览器输入栏卡顿如何解决 Safari搜索建议与缓存清理
AO3网页版合集入口 Archive of Our Own同人作品浏览指南
淘宝网网页版登录入口 淘宝官方网页版快捷登录
迅雷下载到U盘速度很慢怎么办_迅雷U盘下载慢优化方法
谷歌浏览器浏览体验优化_谷歌浏览器新版直连永久可用提示
mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤
php源码怎么看淘宝客系统_看php源码淘宝客系统技巧
优化HTML表单样式:解决输入框焦点跳动与元素间距问题
Yandex搜索引擎官网入口_俄罗斯Yandex免登录一键直达
如何在Promise链中优雅地中断后续then执行
Golang如何优化CPU绑定任务分配策略_Golang CPU任务分配优化实践
Mac怎么使用表情符号_Mac Emoji快捷键面板
windows10怎么查看硬盘序列号_windows10硬盘id查询命令
Typer应用中动态命令行参数的解析与处理
Python多版本共存与虚拟环境管理深度指南
微博网页版主页入口 微博官方网站免登录访问
俄罗斯方块最新版入口 俄罗斯方块在线玩官网入口


2025-11-12
浏览次数:次
返回列表