你是否曾因“在我机器上能跑”而头疼?是否厌倦了在不同项目间切换时反复安装和配置 PHP、Node.js、MySQL 或 Redis?Docker 正是解决这些问题的利器。
通过容器化技术,Docker 能让你在几秒内启动一个完全隔离、可复现的开发环境。本文将手把手教你如何用 Docker 和 docker-compose.yml 搭建一个包含 Web 服务(Nginx)、后端(PHP-FPM)和数据库(MySQL)的本地开发栈。
当然可以!以下是一篇适合发布在 WordPress 技术类博客上的原创技术文章,主题为 “使用 Docker 快速搭建本地开发环境:从零开始的实战指南”。文章面向初级到中级开发者,内容实用、结构清晰,可直接发布。
一、为什么选择 Docker 做本地开发?
- 环境一致性:开发、测试、生产环境完全一致。
- 快速启动/销毁:一键启停整个服务栈。
- 依赖隔离:不同项目使用不同版本的 MySQL 或 Node.js 互不干扰。
- 团队协作友好:只需共享
docker-compose.yml,新成员秒级入坑。
二、准备工作
确保你的系统已安装:
- Docker
- Docker Compose(Docker Desktop 已内置)
验证安装:
docker --version
docker-compose --version
三、项目结构设计
我们创建如下目录结构:
my-app/
├── docker-compose.yml
├── src/ # 你的应用代码(如 Laravel、WordPress 等)
│ └── index.php
├── nginx/
│ └── default.conf # Nginx 配置
└── .env # 环境变量(可选)
四、编写 docker-compose.yml
在 my-app/ 目录下创建 docker-compose.yml:
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "8000:80"
volumes:
- ./src:/var/www/html
- ./nginx/default.conf:/etc/nginx/conf.d/default.conf
depends_on:
- php
networks:
- app-network
php:
image: php:8.2-fpm
volumes:
- ./src:/var/www/html
networks:
- app-network
db:
image: mysql:8.0
restart: always
environment:
MYSQL_ROOT_PASSWORD: rootpass
MYSQL_DATABASE: myapp
MYSQL_USER: user
MYSQL_PASSWORD: password
ports:
- "3306:3306"
volumes:
- db_data:/var/lib/mysql
networks:
- app-network
volumes:
db_data:
networks:
app-network:
driver: bridge
五、配置 Nginx
创建 nginx/default.conf:
server {
listen 80;
server_name localhost;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
注意:fastcgi_pass php:9000; 中的 php 是 Docker Compose 服务名,Docker 会自动解析为对应容器 IP。
六、启动服务
在项目根目录运行:
docker-compose up -d
然后在 src/ 目录下创建一个简单的 index.php:
<?php
echo "Hello from Docker! 🐳<br>";
echo "MySQL 连接测试: ";
try {
$pdo = new PDO('mysql:host=db;dbname=myapp', 'user', 'password');
echo "✅ 成功!";
} catch (PDOException $e) {
echo "❌ 失败: " . $e->getMessage();
}
访问 http://localhost:8000,你应该看到成功连接数据库的消息!
七、常用命令
- 查看日志:
docker-compose logs -f php - 进入容器:
docker-compose exec php bash - 停止服务:
docker-compose down - 重建镜像:
docker-compose up -d --build
八、进阶建议
- 使用
.env文件管理敏感配置; - 为前端项目添加
node服务; - 结合
Xdebug实现远程调试; - 使用
docker-compose.override.yml为本地开发添加额外配置。
结语:
Docker 不仅是部署工具,更是提升本地开发体验的神器。通过本文的简单示例,你已经掌握了用 Docker Compose 搭建多服务开发环境的核心思路。下一步,你可以尝试集成 Redis、MailHog、或替换为 Python/Node.js 后端。
“一次配置,处处运行”——这正是现代开发应有的效率。
欢迎在评论区分享你的 Docker 开发技巧,或提出遇到的问题!