随着容器技术的普及,Docker 已成为现代软件开发的重要工具。对于 PHP 开发者而言,Docker 不仅能解决“在我机器上没问题”的困扰,还能提高部署效率和环境一致性。
使用 Docker 运行 PHP 应用具备以下优势:
环境一致性:确保开发、测试和生产环境保持一致。
部署快速:镜像构建一次,可在多平台重复使用。
易于维护:容器隔离性强,更新与回滚更方便。
Dockerfile 是定义容器运行环境的文件。以下是一个适用于 PHP 项目的基础示例:
FROM php:8.0-apache
# 拷贝 PHP 源代码到容器中
COPY src/ /var/www/html/
# 启用 Apache 的 mod_rewrite 模块
RUN a2enmod rewrite
这个 Dockerfile 使用了 PHP 8.0 搭配 Apache 的官方镜像,将项目源代码复制到容器的 Web 根目录中,并启用了 URL 重写功能,适用于多数 PHP 框架。
编写好 Dockerfile 后,可以使用以下命令进行镜像构建与容器启动:
# 构建镜像
docker build -t my-php-app .
# 运行容器
docker run -d -p 80:80 my-php-app
这段命令会创建名为 my-php-app 的镜像,并启动一个后台运行的容器,将容器的 80 端口映射到主机端口。
当项目涉及多个服务(如数据库)时,Docker Compose 是极佳的选择。以下是一个典型的 PHP + MySQL 的 Compose 配置示例:
version: '3.8'
services:
web:
image: php:8.0-apache
volumes:
- ./src:/var/www/html/
ports:
- "80:80"
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: my_db
这个配置定义了两个服务:
web:PHP 应用容器,映射本地代码目录,并开放 80 端口。
db:MySQL 服务,设置了 root 密码及默认数据库。
通过 docker-compose up 命令即可一键启动所有服务,极大提升开发效率。
将 PHP 应用容器化是构建可移植、高可维护性系统的重要步骤。通过合理编写 Dockerfile 和使用 Docker Compose,不仅可以快速搭建开发环境,还能确保线上部署的稳定与一致。
掌握这些 Docker 与 PHP 的结合技巧,将为你的开发流程带来更多可能性与便利。