如何使用Docker运行PHP文件?
使用 Docker 运行 PHP 文件是开发和部署现代 PHP 应用的常见方式。你可以在几分钟内构建一个隔离、可移植、跨平台的 PHP 环境,避免 “在我电脑上可以运行” 的问题。
一、基本目标
- 在 Docker 容器中运行一个 PHP 文件(例如
index.php) - 可选地添加 Web 服务器(如 Apache 或 Nginx)
- 可选地绑定本地端口用于浏览器访问
二、方法一:直接用 CLI 模式运行 PHP 脚本
适合快速运行 PHP 脚本(非网页)
文件结构示例
my-php-app/
├── script.php
script.php 示例内容
<?php
echo "Hello from Docker!\n";
运行命令(无需 Dockerfile)
docker run --rm -v "$PWD":/app -w /app php:8.2-cli php script.php
解释:
php:8.2-cli:使用官方 PHP CLI 镜像-v "$PWD":/app:把当前目录挂载到容器的 /app-w /app:设置工作目录php script.php:运行该 PHP 文件
三、方法二:运行 PHP Web 应用(内建服务器)
适合开发测试网页应用
示例项目结构
my-php-site/
├── index.php
<!-- index.php -->
<?php
echo "Hello from PHP built-in server!";
启动命令(使用 PHP 内建 Web 服务器)
docker run --rm -p 8080:80 -v "$PWD":/var/www/html php:8.2-cli php -S 0.0.0.0:80 -t /var/www/html
然后打开浏览器访问:
http://localhost:8080
四、方法三:使用 Dockerfile 构建自定义 PHP 容器
适合长期项目部署或需要扩展组件
项目结构
php-docker-app/
├── Dockerfile
├── index.php
Dockerfile 示例
FROM php:8.2-apache
# 可选:启用 rewrite、pdo 等模块
RUN docker-php-ext-install pdo pdo_mysql
# 将本地代码复制到容器中
COPY . /var/www/html/
index.php 示例
<?php
phpinfo();
构建并运行容器
docker build -t my-php-app .
docker run -d -p 8080:80 my-php-app
打开浏览器访问:
五、使用 docker-compose 管理 PHP + MySQL 环境(可选进阶)
适合完整开发环境部署
文件结构
php-compose-app/
├── docker-compose.yml
├── index.php
docker-compose.yml 示例
version: '3'
services:
php:
image: php:8.2-apache
ports:
- "8080:80"
volumes:
- .:/var/www/html
depends_on:
- db
db:
image: mysql:8
restart: always
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: testdb
index.php 示例(带 MySQL)
<?php
$pdo = new PDO("mysql:host=db;dbname=testdb", "root", "root");
echo "Connected to MySQL via Docker!";
启动服务
docker-compose up
📚 权威参考
- 🐳 官方 PHP 镜像说明:https://hub.docker.com/_/php
- 📖 Docker PHP 教程(DigitalOcean):https://www.digitalocean.com/community/tutorials/how-to-set-up-laravel-nginx-and-mysql-with-docker-compose
- 📘 Docker CLI 文档:https://docs.docker.com/engine/reference/run/
总结
| 场景 | 方式 | 推荐 |
|---|---|---|
| 快速运行 PHP 脚本 | docker run php:cli | ✅ |
| 开发网页应用 | php -S 或 php:apache | ✅✅ |
| 构建可移植应用 | 自定义 Dockerfile | ✅✅✅ |
| 搭建完整开发环境 | docker-compose | ✅✅✅ |
更多详细内容请关注其他相关文章!