导读:本期聚焦于小伙伴创作的《Windows系统PHP开发环境搭建:Docker Compose完整配置教程》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Windows系统PHP开发环境搭建:Docker Compose完整配置教程》有用,将其分享出去将是对创作者最好的鼓励。

在Windows上配置PHP与Docker Compose的详细指南

在现代Web开发中,PHP与Docker Compose的组合为开发者提供了一致且隔离的开发环境。通过Docker,你可以在Windows上快速搭建PHP应用,而无需手动安装Apache、MySQL等依赖。本文将详细介绍如何从零开始在Windows上配置PHP与Docker Compose,涵盖环境准备、项目结构、容器编写及运行验证等步骤。

一、前置条件

在开始之前,请确保你的Windows系统满足以下要求:

  • Windows 10 64位专业版、企业版或教育版(版本1903或更高),或者Windows 11
  • 已开启硬件虚拟化(BIOS中启用Intel VT-x或AMD-V)
  • 拥有管理员权限以安装软件

你将需要安装以下核心工具:

  • Docker Desktop for Windows
  • 一个代码编辑器(如VS Code)
  • Git(可选,用于版本控制)

二、安装Docker Desktop for Windows

Docker Desktop是Windows上运行Docker容器的基础环境。它集成了Docker Engine、Docker CLI以及Docker Compose。

访问Docker官方网站并下载Docker Desktop for Windows安装程序。安装过程中,建议勾选“使用WSL 2作为后端”选项,因为WSL 2提供更好的性能和兼容性。

安装完成后,重启系统并启动Docker Desktop。在任务栏托盘中,Docker图标显示为稳定状态(白色鲸鱼)即表示运行正常。你可以打开命令提示符或PowerShell,运行以下命令验证:

docker --version
docker-compose --version

如果输出显示版本号,说明安装成功。

三、创建PHP项目结构

接下来,在Windows的文件系统中创建一个项目目录,用于存放你的PHP代码和Docker配置文件。假设项目名称为php-docker-app,目录结构如下:

php-docker-app/
├── docker-compose.yml
├── Dockerfile
├── src/
│   └── index.php
└── nginx/
    └── default.conf

src/目录下创建一个简单的PHP文件,用于后续测试:

<?php
phpinfo();
?>

这个文件将输出PHP的配置信息,方便我们确认环境是否搭建成功。

四、编写Dockerfile配置PHP环境

Dockerfile用于定义PHP镜像的构建规则。在项目根目录下创建Dockerfile文件,内容如下:

FROM php:8.2-fpm

# 安装系统依赖和PHP扩展
RUN apt-get update && apt-get install -y \
    libpng-dev \
    libjpeg-dev \
    libfreetype6-dev \
    zip \
    unzip \
    git \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) gd pdo_mysql mysqli

# 安装Composer
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

# 设置工作目录
WORKDIR /var/www/html

# 复制项目文件
COPY src/ /var/www/html/

# 配置PHP-FPM
EXPOSE 9000
CMD ["php-fpm"]

这段配置基于官方PHP 8.2 FPM镜像,安装了GD库、PDO MySQL扩展以及Composer依赖管理工具。你可以根据项目需求调整PHP版本和扩展列表。

五、编写docker-compose.yml文件

docker-compose.yml是整个服务的编排文件,它定义了PHP应用、Web服务器和数据库等服务。在项目根目录创建docker-compose.yml

version: '3.8'

services:
  php:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: php-app
    volumes:
      - ./src:/var/www/html
    networks:
      - app-network

  nginx:
    image: nginx:latest
    container_name: nginx-server
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
    networks:
      - app-network

  mysql:
    image: mysql:8.0
    container_name: mysql-db
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword
      MYSQL_DATABASE: app_db
      MYSQL_USER: app_user
      MYSQL_PASSWORD: userpassword
    ports:
      - "3307:3306"
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

volumes:
  mysql_data:

在这个配置中:

  • php服务:基于Dockerfile构建,将源码挂载到容器内,并连接到内部网络。
  • nginx服务:使用官方Nginx镜像,将8080端口映射到容器的80端口,依赖于PHP服务启动。
  • mysql服务:使用MySQL 8.0镜像,设置管理员和普通用户账号,并将数据持久化到命名卷中。

六、配置Nginx反向代理

为了让Nginx正确地将PHP请求转发到PHP-FPM,需要在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;
    }

    location ~ /\.ht {
        deny all;
    }
}

注意fastcgi_pass php:9000中的php对应docker-compose.yml中定义的php服务名称,Docker内部DNS会自动解析。

七、启动容器并验证

完成所有配置后,在项目根目录打开终端(PowerShell或CMD),执行以下命令:

docker-compose up -d

该命令将构建PHP镜像、拉取Nginx和MySQL镜像,并在后台启动所有容器。首次构建可能需要几分钟时间,具体取决于网络速度。

启动完成后,运行docker-compose ps查看容器状态,所有服务都应显示为Up

打开浏览器,访问http://localhost:8080,如果看到PHP信息页面,说明配置成功。

八、常用命令与后续操作

开发过程中,你可能需要频繁与容器交互。以下是一些常用命令:

  • 查看容器日志:docker-compose logs -f [服务名]
  • 进入PHP容器Shell:docker-compose exec php bash
  • 停止并移除所有容器:docker-compose down
  • 重新构建某个服务:docker-compose build php

若要修改PHP配置(例如调整upload_max_filesize),可以在Dockerfile中添加自定义配置或挂载配置文件。例如:

COPY custom.ini /usr/local/etc/php/conf.d/

然后在custom.ini中写入:

upload_max_filesize = 20M
post_max_size = 20M

九、常见问题与解决方法

问题原因解决方法
端口8080被占用其他程序占用了该端口修改docker-compose.yml中ports映射,例如改为"8081:80"
PHP文件未生效Nginx无法连接PHP-FPM检查nginx/default.conffastcgi_pass的地址是否与docker-compose服务名匹配
MySQL连接失败主机地址或端口配置错误在PHP代码中使用服务名mysql作为主机,端口为3306
文件权限问题Windows与Linux文件权限不一致在Dockerfile中设置RUN chmod -R 755 /var/www/html

十、总结

通过以上步骤,你已经在Windows上成功配置了PHP与Docker Compose的开发环境。整个过程涵盖了Docker Desktop的安装、项目结构设计、Dockerfile编写、服务编排以及Nginx反向代理设置。这套环境不仅便于团队协作,也能确保开发、测试和生产环境的一致性。

随着项目的增长,你可以进一步扩展docker-compose.yml,添加Redis、Elasticsearch等服务,或者使用Docker Compose的网络别名实现服务间的高速通信。掌握这些技能后,你将能更高效地管理和部署PHP应用。

PHP开发环境Docker_ComposeWindows_DockerNginx配置MySQL容器

免责声明:已尽一切努力确保本网站所含信息的准确性。网站部分内容来源于网络或由用户自行发表,内容观点不代表本站立场。本站是个人网站免费分享,内容仅供个人学习、研究或参考使用,如内容中引用了第三方作品,其版权归原作者所有。若内容触犯了您的权益,请联系我们进行处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。前端、网络、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握网站开发与运维所需的核心技术栈。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端逻辑,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。