推荐用 docker-compose 一键部署 PHP-FPM + Nginx 分离架构,PHP 容器安装 pdo_mysql 等扩展,Nginx 通过 fastcgi_pass php:9000 代理,共享代码卷并基于自定义网络通信。

用 Docker 部署 PHP 环境,推荐用 docker-compose 一次性拉起 PHP + Nginx(或 Apache)+ MySQL(可选)组合,比手动 run 多个容器更清晰、易维护。
现代 PHP 容器化推荐「Nginx 负责静态文件和反向代理,PHP-FPM 单独容器处理动态请求」,职责分离、便于扩缩容和日志隔离。
fastcgi_pass 指向 PHP-FPM 容器(如 php:9000)php:8.2-fpm(或其他版本),安装常用扩展(pdo_mysql、gd、mbstring 等),并挂载相同代码目录以下是最小可用的 docker-compose.yml(含 PHP-FPM 和 Nginx):
version: '3.8'
services:
nginx:
image: nginx:alpine
ports:
- "8080:80"
volumes:
- ./src:/var/www/html # 本地代码映射
- ./nginx/conf.d:/etc/nginx/conf.d # 自定义 nginx 配置
depends_on:
- php
<p>php:
image: php:8.2-fpm
volumes:</p><ul><li>./src:/var/www/html</li><li>./php/php.ini:/usr/local/etc/php/php.ini
environment:</li><li>TZ=Asia/Shanghai注意:
– Nginx 的 conf.d/default.conf 需配置 fastcgi_pass php:9000(不是 127.0.0.1:9000),因跨容器通信靠服务名
– PHP 容器默认监听 9000/tcp,且只绑定在 0.0.0.0:9000(Docker 内部可直接访问)
如果项目需连接数据库,不建议在 PHP 镜像里装 mysql-client,而应:
立即学习“PHP免费学习笔记(深入)”;
mysql 或 mariadb 服务(用官方镜像),通过 depends_on 和环境变量连接FROM php:8.2-fpm RUN docker-php-ext-install pdo_mysql mysqli gd mbstring exif pcntl RUN pecl install xdebug && docker-php-ext-enable xdebug
然后在 compose 中用 build: . 替代 image:,构建带扩展的定制镜像。
启动后执行:docker-compose up -d,再访问 http://localhost:8080。
File not found.:检查 Nginx 配置中 root 和 fastcgi_param SCRIPT_FILENAME 路径是否匹配挂载路径.php 请求 proxy 到 php:9000,且 PHP 容器内有对应文件docker-compose restart php
以上就是docker怎么部署php环境_dockercompose配置php服务【容器】的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号