php应用云原生部署需基于官方alpine镜像(如php:8.2-fpm-alpine)构建可复用容器,确保php≥8.0、含composer.json和标准入口文件;dockerfile须适配alpine包管理安装扩展,nginx通过服务名php-service:9000反向代理,docker-compose.yml编排多容器并清理 dangling 镜像以保障版本准确。

将PHP应用部署到云原生环境,不是找一个“永久免费版”安装包点几下就完事,而是要基于官方镜像构建可复用、可审计、可升级的容器化运行时。所谓“永久免费”,本质是使用开源社区维护的官方PHP镜像(如php:8.2-fpm-alpine),不依赖任何闭源或带 license 限制的发行版。
确认PHP项目已具备容器化前提
打开项目根目录,检查是否存在 composer.json 和 public/index.php(或 index.php 入口文件)。若缺失 composer.json,运行 composer init 初始化依赖声明;若入口路径非标准,需在后续 Nginx 配置中显式指定 root 和 fastcgi_param SCRIPT_FILENAME。
确保 php --version 输出不低于 8.0 —— PHP 7.4 已于 2022 年 11 月终止支持,Kubernetes 生产集群普遍拒绝调度含已知 CVE 的旧版本镜像。
编写最小可行 Dockerfile
在项目根目录新建 Dockerfile,内容如下:
FROM php:8.2-fpm-alpine
WORKDIR /var/www/html
COPY . .
RUN apk add --no-cache git && composer install --no-dev --optimize-autoloader
EXPOSE 9000
CMD ["php-fpm"]
这一步必须用 【alpine 镜像】,Debian 基础镜像体积超 120MB,会拖慢 CI 构建与 K8s 拉取速度;Alpine 版本仅约 60MB,且默认禁用 shell 交互,攻击面更小。
不要在 RUN 中执行 apk add 安装扩展后直接写 docker-php-ext-install —— Alpine 的包管理器与 Debian 不同,mysqli 等扩展需先 apk add php82-mysqli 再启用,否则扩展加载失败且无报错提示。
配置 Nginx 反向代理容器
创建 nginx.conf,放在项目 nginx/ 子目录下:
server {
listen 80;
root /var/www/html/public;
index index.php;
location ~ \.php$ {
fastcgi_pass php-service:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
}
注意 fastcgi_pass php-service:9000 —— 这里用的是 Docker 自动解析的容器名,不是 localhost 或 127.0.0.1。在 bridge 网络中,容器间通信必须通过服务名,否则连接被拒绝。
定义多容器协作关系
创建 docker-compose.yml:
version: "3.8"
services:
nginx:
image: nginx:alpine
ports: [ "80:80" ]
volumes: [ "./nginx/nginx.conf:/etc/nginx/conf.d/default.conf" ]
depends_on: [ php-service ]
php-service:
build: .
environment:
- APP_ENV=production
- APP_DEBUG=false
volumes: [ "./:/var/www/html" ]
第一步:运行 docker compose up -d 启动服务。
第二步:访问 http://localhost,看到 PHP 输出页面即表示基础链路通了。
第三步:执行 docker compose exec php-service php -v,确认输出为 PHP 8.2.x —— 若显示 8.1 或更低,说明 Dockerfile 中的 FROM 行未生效,可能因本地存在同名 dangling 镜像缓存,需先运行 docker image prune -f 清理。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











