导读:本期聚焦于小伙伴创作的《Docker怎么部署PHP项目?详细的一键部署流程是什么》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Docker怎么部署PHP项目?详细的一键部署流程是什么》有用,将其分享出去将是对创作者最好的鼓励。

Docker部署PHP项目可以统一开发、测试、生产环境,避免环境差异导致的运行问题,大幅提升部署效率。下面详细介绍完整的部署流程。

Docker怎么部署PHP项目?详细的一键部署流程是什么

一、准备PHP项目文件

首先需要一个可运行的PHP项目,这里以一个简单的PHP测试项目为例,项目目录结构如下:

php_project/
├── index.php
├── Dockerfile
├── docker-compose.yml
└── nginx_conf
    └── default.conf

其中index.php是项目入口文件,内容如下:

<?php
echo "Hello Docker PHP Deploy";
// 测试数据库连接
$db_host = getenv('DB_HOST');
$db_user = getenv('DB_USER');
$db_pass = getenv('DB_PASS');
$db_name = getenv('DB_NAME');
if ($db_host && $db_user && $db_pass && $db_name) {
    $conn = new mysqli($db_host, $db_user, $db_pass, $db_name);
    if ($conn->connect_error) {
        echo "数据库连接失败: " . $conn->connect_error;
    } else {
        echo "数据库连接成功";
        $conn->close();
    }
}
?>

二、编写Dockerfile构建PHP镜像

Dockerfile用于定义PHP运行环境的镜像,这里选择官方的PHP镜像,并安装必要的扩展:

# 基础镜像选择PHP 8.1的FPM版本
FROM php:8.1-fpm
# 安装必要的PHP扩展,比如mysqli用于MySQL连接
RUN docker-php-ext-install mysqli pdo pdo_mysql
# 设置工作目录
WORKDIR /var/www/html
# 把当前目录的项目文件复制到镜像的工作目录
COPY . /var/www/html

三、编写Nginx配置

PHP项目通常需要Nginx作为Web服务器,转发请求到PHP-FPM,nginx_conf/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;
    }
    # 转发PHP请求到PHP-FPM容器
    location ~ .php$ {
        fastcgi_pass php-fpm:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

四、编写docker-compose.yml实现一键部署

docker-compose可以管理多个容器,实现一键启动所有服务,docker-compose.yml内容如下:

version: '3'
services:
  # Nginx服务
  nginx:
    image: nginx:latest
    ports:
      - "8080:80"
    volumes:
      - ./nginx_conf:/etc/nginx/conf.d
      - ./:/var/www/html
    depends_on:
      - php-fpm
  # PHP-FPM服务
  php-fpm:
    build: .
    volumes:
      - ./:/var/www/html
  # MySQL服务(可选,根据项目需求添加)
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: root123
      MYSQL_DATABASE: test_db
      MYSQL_USER: test_user
      MYSQL_PASSWORD: test_pass
    volumes:
      - mysql_data:/var/lib/mysql
    ports:
      - "3306:3306"
# 定义数据卷,持久化MySQL数据
volumes:
  mysql_data:

五、执行一键部署命令

php_project目录下执行以下命令即可完成部署:

# 构建镜像并启动所有容器,-d表示后台运行
docker-compose up -d

启动完成后,访问http://127.0.0.1:8080就能看到PHP项目的输出内容。如果需要停止服务,执行以下命令:

docker-compose down

六、部署注意事项

  • 项目文件的权限需要正确设置,避免出现无法读取文件的问题,可以在Dockerfile中调整文件所属用户和权限。
  • 如果项目需要连接MySQL,要确保环境变量配置正确,容器之间的网络是互通的,docker-compose默认会为所有服务创建同一个网络。
  • 生产环境部署时,不要直接暴露数据库端口到宿主机,避免安全风险,可以只在内部网络中让PHP容器访问MySQL容器。
  • 如果项目依赖其他服务,比如Redis,只需要在docker-compose.yml中添加对应的服务配置即可,部署流程保持一致。

DockerPHP一键部署容器化修改时间:2026-06-19 02:00:43

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