0

0

怎么用docker运行浏览器php_docker配置php步骤【说明】

星夢妙者

星夢妙者

发布时间:2025-12-26 22:31:02

|

238人浏览过

|

来源于php中文网

原创

需构建含web服务器与php的docker容器并正确映射端口、挂载文件、启动服务;可选官方php:apache镜像快速启动、自定义dockerfile集成chrome、docker-compose编排lemp栈,或排查403/源码泄露/pdo缺失等常见问题。

怎么用docker运行浏览器php_docker配置php步骤【说明】

如果您希望在 Docker 容器中运行浏览器可访问的 PHP 环境,需构建一个包含 Web 服务器(如 Apache 或 Nginx)与 PHP 解释器的容器,并确保端口映射正确、文件挂载可用、服务自动启动。以下是实现该目标的具体操作步骤:

一、使用官方 php:apache 镜像快速启动

此方法基于 PHP 官方维护的 php:apache 镜像,已预装 Apache 和 PHP 模块,适合快速验证和开发测试。镜像内置了 mod_php,无需额外配置即可解析 .php 文件。

1、创建一个本地目录用于存放 PHP 文件,例如 /home/user/myphp,并在其中新建 index.php,内容为

2、执行以下命令启动容器:docker run -d --name myphp -p 8080:80 -v /home/user/myphp:/var/www/html php:apache

立即学习PHP免费学习笔记(深入)”;

3、打开浏览器,访问 http://localhost:8080,应显示 PHP 输出内容。

二、使用自定义 Dockerfile 构建含 Chrome 的 PHP 浏览器环境

若需在容器内运行浏览器(如 Chrome)并由 PHP 调用(例如通过 shell_exec 执行 headless Chrome),需在基础 PHP 镜像上安装 Chromium 及依赖库,并解决沙箱权限问题。

1、新建文件 Dockerfile,内容如下:

FROM php:8.2-apache

RUN apt-get update && apt-get install -y wget gnupg && \

wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - && \

echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && \

apt-get update && apt-get install -y google-chrome-stable && \

rm -rf /var/lib/apt/lists/*

Post AI
Post AI

博客文章AI生成器

下载

COPY index.php /var/www/html/

EXPOSE 80

2、在同一目录下创建 index.php,内容包含测试 Chrome 调用:&1', $out); print_r($out); ?>

3、构建并运行:docker build -t php-chrome . && docker run -d --name php-chrome-run -p 8081:80 --cap-add=SYS_ADMIN php-chrome

三、使用 docker-compose 统一管理 PHP + Nginx + MySQL 多服务

当需要完整 LEMP 支持(尤其涉及数据库交互的 PHP 应用),推荐使用 docker-compose 编排多个容器。Nginx 作为反向代理处理 PHP-FPM 请求,分离关注点并提升灵活性。

1、创建 docker-compose.yml,内容包含 nginxphp-fpmmysql 三个服务,并设置网络互通与卷挂载。

2、在 nginx 服务的配置中,添加 location ~ \.php$ 块,将请求代理至 php-fpm:9000

3、准备 php-fpm 的自定义配置文件 www.conf,启用 catch_workers_output = yes 便于调试错误日志。

4、执行 docker-compose up -d 启动全部服务,访问 http://localhost 即可加载 PHP 页面。

四、修复常见 php\_docker 配置失败问题

容器启动后 PHP 文件无法解析或 500 错误频发,通常源于权限、路径映射或模块缺失。以下为高频故障对应修正方式:

1、若浏览器返回 403 Forbidden,检查 /var/www/html 目录是否被挂载且容器内用户具有读取权限;可添加 -u www-data 参数或修改宿主机目录权限为 chmod -R 755

2、若 PHP 代码不执行而直接显示源码,确认 Apache 是否启用 mod_php(php:apache 镜像默认启用),或 Nginx 配置中是否遗漏 fastcgi_pass 指令指向正确的 PHP-FPM 地址。

3、若出现 Class 'PDO' not found,进入容器执行 docker exec -it myphp bash,再运行 docker-php-ext-install pdo_mysql 并重启 Apache。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
mysql修改数据表名
mysql修改数据表名

MySQL修改数据表:1、首先查看数据库中所有的表,代码为:‘SHOW TABLES;’;2、修改表名,代码为:‘ALTER TABLE 旧表名 RENAME [TO] 新表名;’。php中文网还提供MySQL的相关下载、相关课程等内容,供大家免费下载使用。

685

2023.06.20

MySQL创建存储过程
MySQL创建存储过程

存储程序可以分为存储过程和函数,MySQL中创建存储过程和函数使用的语句分别为CREATE PROCEDURE和CREATE FUNCTION。使用CALL语句调用存储过程智能用输出变量返回值。函数可以从语句外调用(通过引用函数名),也能返回标量值。存储过程也可以调用其他存储过程。php中文网还提供MySQL创建存储过程的相关下载、相关课程等内容,供大家免费下载使用。

493

2023.06.21

mongodb和mysql的区别
mongodb和mysql的区别

mongodb和mysql的区别:1、数据模型;2、查询语言;3、扩展性和性能;4、可靠性。本专题为大家提供mongodb和mysql的区别的相关的文章、下载、课程内容,供大家免费下载体验。

287

2023.07.18

mysql密码忘了怎么查看
mysql密码忘了怎么查看

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql密码忘了怎么办呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

519

2023.07.19

mysql创建数据库
mysql创建数据库

MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS 应用软件之一。那么mysql怎么创建数据库呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

266

2023.07.25

mysql默认事务隔离级别
mysql默认事务隔离级别

MySQL是一种广泛使用的关系型数据库管理系统,它支持事务处理。事务是一组数据库操作,它们作为一个逻辑单元被一起执行。为了保证事务的一致性和隔离性,MySQL提供了不同的事务隔离级别。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

392

2023.08.08

sqlserver和mysql区别
sqlserver和mysql区别

SQL Server和MySQL是两种广泛使用的关系型数据库管理系统。它们具有相似的功能和用途,但在某些方面存在一些显著的区别。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

542

2023.08.11

mysql忘记密码
mysql忘记密码

MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。那么忘记mysql密码我们该怎么解决呢?php中文网给大家带来了相关的教程以及其他关于mysql的文章,欢迎大家前来学习阅读。

666

2023.08.14

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

1

2026.03.06

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
MySQL 教程
MySQL 教程

共48课时 | 2.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

简单聊聊mysql8与网络通信
简单聊聊mysql8与网络通信

共1课时 | 844人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号