Docker部署PHP项目指南:从编写Dockerfile到容器运行详解

陈默
陈默
发布时间:2026-10-15 | 4人浏览过
原创

本文介绍如何使用Dockerfile构建镜像并将编译后的PHP项目部署到容器中。涵盖项目结构配置、Dockerfile核心指令、Nginx与PHP-FPM环境设置及容器启动流程。

目标与环境准备

实现通过Docker运行Nginx和PHP-FPM以提供Web服务。需要准备一个编译完成的静态资源目录(通常命名为 /dist)用于存放项目代码,并配置相关的Nginx站点配置文件。

第1步:确定项目目录结构

在操作前,需明确本地项目的文件组织方式,确保构建上下文路径正确。推荐的结构如下:

  • /project_name:项目根目录。
  • /dist:存放经过编译或构建的静态项目输出文件。
  • /config:存放配置文件,其中包含 Dockerfile 和 nginx.conf 等关键文件。

第2步:编写Nginx站点配置

创建 /config/nginx.conf 文件,定义Nginx如何监听端口及处理PHP请求。配置中需确保将项目根目录指向 /var/www/project_name/。

第3步:创建Dockerfile文件

在 /config/Dockerfile 中定义镜像构建逻辑。本示例使用Ubuntu作为基础系统,并安装Nginx和PHP7.4-FPM。

# 基于Ubuntu最新镜像构建
FROM ubuntu:latest

# 设定维护者信息
MAINTAINER congjiang

# 更新软件源并安装Nginx、PHP7.4-FPM及文本编辑器
RUN apt-get update && apt-get upgrade -y && apt-get install -y nginx php7.4-fpm vim

# 将本地的编译后代码复制到容器中的 /var/www/project_name/ 目录下
COPY ./dist/ /var/www/project_name/

# 复制自定义Nginx配置到指定目录,作为默认站点配置
COPY ./config/nginx.conf /etc/nginx/conf.d/default.conf

# 容器启动时执行的命令:先后台启动PHP-FPM,再前台保持Nginx常驻
CMD php-fpm7.4 -D && nginx -g 'daemon off;'

第4步:生成Docker镜像

在项目根目录 /project_name 下执行构建命令。使用 -f 参数指定位于 config 子目录下的Dockerfile,并通过 -t 参数命名镜像(例如 myproject:latest)。末尾的点 . 表示将当前目录作为构建上下文。

docker build -f config/Dockerfile -t myproject:latest .

第5步:启动Docker容器

使用构建好的镜像运行容器。若需即时修改文件并生效,建议使用 -v 挂载卷映射功能。

docker run -itd -p 80:8080 myproject:latest

常用参数说明:

  • -p 80:8080:将主机的80端口映射至容器的8080端口。
  • -d:后台运行容器。
  • -v 主机路径:容器路径:如 -v E:/logs/:/var/logs/nginx/,可实现日志文件或配置文件的实时同步。

此时访问 http://localhost/ 即可验证网站是否正常运行。

第6步:排查常见问题

在重复构建相同名称的镜像时,旧镜像不会被自动删除,而是变成 <none>:<none> 状态的悬空镜像。为避免磁盘空间占用,可先使用以下命令强制清理旧版本镜像:

docker rmi -f <name>:<tag>

第7步:容器与镜像管理

进入正在运行的容器内部查看或调试:

docker ps            # 获取容器的CONTAINER ID
docker exec -it <ID> /bin/bash

清理不再需要的资源:

docker rm -f <name>           # 强制删除指定名称的容器
docker rmi -f <name>:<tag>   # 强制删除指定的本地镜像

如果不想手动编写配置,也可以直接拉取现成的基础镜像:

docker pull freedomx20/nginx-fpm7.4:1.0
以上就是利用Dockerfile文件部署php项目的详细内容,更多关于Dockerfile文件部署php内容请搜索本站以前的文章或继续浏览下面的相关文章!
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表