使用 Docker 快速搭建本地开发环境:从零开始的实战指南

2026-02-21 748 0

你是否曾因“在我机器上能跑”而头疼?是否厌倦了在不同项目间切换时反复安装和配置 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 --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 开发技巧,或提出遇到的问题!

相关文章

宝塔面板能做什么?——新手入门全面指南
零基础也能玩转!阿里云ESA边缘加速保姆级入门指南
“南山必胜客”背后的法律逻辑:为何腾讯总在协议中写明“签订地为深圳市南山区”?
你的新域名刚注册13秒,OpenAI就来敲门了

发布评论