php网站怎么部署到docker容器

来源:个人站长网作者:乙爱丽丝头衔:网络博主
导读:本期聚焦于小伙伴创作的《php网站怎么部署到docker容器》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《php网站怎么部署到docker容器》有用,将其分享出去将是对创作者最好的鼓励。

将php网站部署到docker容器可以实现开发、测试、生产环境的一致性,避免环境差异导致的问题,同时便于后续的迁移和扩容。下面详细介绍完整的部署流程。

php网站怎么部署到docker容器

部署前准备

首先需要确保本地已经安装docker和docker-compose,然后准备好要部署的php网站项目源码,假设项目目录结构如下:

  • project/
  • ├── src/  # php网站源码目录
  • ├── nginx/  # nginx配置文件目录
  • ├── Dockerfile  # php服务镜像构建文件
  • └── docker-compose.yml  # 容器编排文件

编写php服务Dockerfile

php网站运行需要php-fpm服务,我们可以基于官方php镜像构建自定义镜像,安装需要的扩展。以下是Dockerfile内容:

# 使用官方php-fpm镜像作为基础镜像
FROM php:8.2-fpm

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

# 安装需要的php扩展,比如pdo_mysql
RUN docker-php-ext-install pdo_mysql

# 将本地项目源码复制到容器工作目录
COPY ./src /var/www/html

# 暴露9000端口,php-fpm默认端口
EXPOSE 9000

配置nginx服务

php-fpm需要和nginx配合才能处理http请求,我们需要准备nginx的配置文件,假设文件名为nginx/default.conf,内容如下:

server {
    listen 80;
    server_name localhost;

    # 网站根目录,对应php容器中的目录
    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:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

编写docker-compose编排文件

使用docker-compose可以同时管理php-fpm和nginx两个容器,实现容器间的网络通信。docker-compose.yml内容如下:

version: '3'
services:
  # php-fpm服务
  php:
    build:
      context: .
      dockerfile: Dockerfile
    volumes:
      - ./src:/var/www/html  # 挂载源码目录,方便本地修改同步到容器
    networks:
      - php-net

  # nginx服务
  nginx:
    image: nginx:alpine
    ports:
      - "8080:80"  # 将本地8080端口映射到容器80端口
    volumes:
      - ./src:/var/www/html  # 挂载源码目录
      - ./nginx:/etc/nginx/conf.d  # 挂载nginx配置目录
    depends_on:
      - php
    networks:
      - php-net

# 自定义网络,让两个容器可以互相访问
networks:
  php-net:
    driver: bridge

启动并验证部署

在docker-compose.yml所在目录执行以下命令启动容器:

# 构建镜像并启动容器
docker-compose up -d

# 查看容器运行状态
docker-compose ps

容器启动后,可以在本地浏览器访问http://127.0.0.1:8080,如果看到php网站的首页,说明部署成功。如果访问失败,可以通过以下命令查看容器日志排查问题:

# 查看php容器日志
docker-compose logs php

# 查看nginx容器日志
docker-compose logs nginx

常见问题解决

php文件无法解析

检查nginx配置中的fastcgi_pass是否指向正确的php容器名和端口,同时确认SCRIPT_FILENAME参数配置正确,路径要和php容器中的源码路径一致。

数据库连接失败

如果php网站需要连接数据库,可以在docker-compose中新增mysql服务,然后在php代码中通过服务名连接数据库,比如数据库服务名为mysql,连接地址就写mysql即可。

权限问题

如果容器中没有权限读写文件,可以在Dockerfile中添加用户权限配置,或者调整本地项目目录的读写权限。

phpdockerphp-fpmnginxDockerfile修改时间:2026-06-07 01:38:34

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