Docker部署PHP项目指南:从编写Dockerfile到容器运行详解
本文介绍如何使用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内容请搜索本站以前的文章或继续浏览下面的相关文章!免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









