通八洲科技

docker怎么部署php环境_dockercompose配置php服务【容器】

日期:2025-12-23 00:00 / 作者:絕刀狂花
推荐用 docker-compose 一键部署 PHP-FPM + Nginx 分离架构,PHP 容器安装 pdo_mysql 等扩展,Nginx 通过 fastcgi_pass php:9000 代理,共享代码卷并基于自定义网络通信。

用 Docker 部署 PHP 环境,推荐用 docker-compose 一次性拉起 PHP + Nginx(或 Apache)+ MySQL(可选)组合,比手动 run 多个容器更清晰、易维护。

基础结构:PHP-FPM + Nginx 分离部署

现代 PHP 容器化推荐「Nginx 负责静态文件和反向代理,PHP-FPM 单独容器处理动态请求」,职责分离、便于扩缩容和日志隔离。

docker-compose.yml 关键配置示例

以下是最小可用的 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

php: image: php:8.2-fpm volumes:

  • ./src:/var/www/html
  • ./php/php.ini:/usr/local/etc/php/php.ini environment:
  • 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 或其他扩展

如果项目需连接数据库,不建议在 PHP 镜像里装 mysql-client,而应:

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