Docker 安装 PHP

Docker 安装 PHP 关键要点

  • 研究表明,在 Docker 中运行 PHP 容器是开发和部署 PHP 应用的常用方式,适合 Web 开发、测试或生产环境。
  • 它似乎特别适合 与 Nginx 或 Apache 结合,快速构建 PHP Web 应用环境。
  • 中国用户可能需要 配置国内镜像源(如 https://docker.xuanyuan.me/)以加速拉取 PHP 镜像。

快速安装指南

  1. 确保 Docker 已安装:
  • 验证 Docker:docker --version,输出示例:Docker version 27.0.3, build 7d4bcd8.
  1. 配置镜像加速器(中国用户推荐):
  • 编辑 /etc/docker/daemon.json:
    json { "registry-mirrors": ["https://docker.xuanyuan.me/"] }
  • 重启 Docker:sudo systemctl restart docker.
  1. 拉取 PHP 镜像:
   docker pull php
  1. 运行 PHP 容器:
   docker run -it --name my-php php:8.2-cli bash
  • -i:交互式,-t:分配终端,bash:启动 shell。
  1. 验证:
  • 在容器内运行 php -v 检查 PHP 版本。

注意事项

  • 默认拉取最新版本(php:latest),可指定版本如 php:8.2-fpmphp:7.4-apache.
  • PHP 镜像有多种变体(如 clifpmapache),根据需求选择。
  • 中国用户需确保镜像源可用,必要时使用 VPN.
  • 数据持久化需使用卷(如 -v)挂载 PHP 代码。

Docker 安装 PHP 详细报告

本文提供关于在 Docker 中安装和运行 PHP 容器的全面中文讲解,特别针对中国大陆用户优化。以下是详细背景、操作步骤和注意事项的深入分析,确保用户能顺利运行 PHP 容器并解决可能的问题。

背景与概述

Docker 是一种开源容器化平台,基于操作系统级别的虚拟化,允许开发者将应用程序及其依赖封装到可移植的容器中。PHP 是一种广泛使用的服务器端脚本语言,适用于 Web 开发。Docker 官方提供了多个 PHP 镜像版本(如 php:8.2-fpmphp:7.4-apache),支持与 Apache、Nginx 等 Web 服务器结合。研究表明,PHP 容器因其灵活性和易于配置的特点,是 Docker 用户的热门选择。搜索结果(如“Docker Hub”、“菜鸟教程”和 CSDN)一致指出,PHP 容器适合快速部署 Web 应用并确保环境一致性。

在中国大陆,由于网络限制(如 GFW),从 Docker Hub 拉取 PHP 镜像可能较慢或失败,配置国内镜像源是关键步骤。

系统要求与准备

运行 PHP 容器前,确保满足以下条件:

  • 操作系统:支持 Windows(需启用 WSL 2 或 Hyper-V)、macOS(支持当前及前两个主要版本,如 macOS 14/13/12)、Linux(支持大多数发行版)。
  • Docker 版本:1.10 及以上,推荐最新版本的 Docker CE。
  • 网络:需访问 Docker Hub 或国内镜像源,建议配置加速器。
  • 硬件:至少 1 GB 内存,建议 2 GB 或更高以支持容器运行。

以下表格总结了系统要求:

类别详情
操作系统Windows 10/11、macOS 12+、Linux
Docker 版本1.10 及以上,推荐最新版本
网络访问 Docker Hub 或国内镜像源(如 https://docker.xuanyuan.me/)
硬件至少 1 GB 内存,建议 2 GB 或更高

详细操作步骤

以下步骤基于最新 Docker 版本(截至 2025 年 7 月 21 日),适用于 Windows、macOS 和 Linux,并为中国用户优化。

  1. 验证 Docker 安装
  • 打开终端(Windows:PowerShell/WSL,macOS/Linux:默认终端)。
  • 运行:
    bash docker --version
  • 预期输出示例:Docker version 27.0.3, build 7d4bcd8
  • 若失败,参考 macOS Docker 安装 或其他相关教程重新安装。
  1. 配置镜像加速器(中国用户推荐)
  • 在中国大陆,直接拉取 Docker Hub 镜像可能因网络限制失败。配置国内镜像源可提高成功率:
    • 常用国内镜像源(截至 2025 年 7 月 21 日):
    • https://docker.xuanyuan.me/
    • https://docker.1ms.run
    • https://docker.1panel.live
    • 配置方法
    • Linux:编辑 /etc/docker/daemon.json(若不存在则创建):
      json { "registry-mirrors": ["https://docker.xuanyuan.me/", "https://docker.1ms.run"] }
      保存后重启 Docker:
      bash sudo systemctl restart docker
    • Windows/macOS:打开 Docker Desktop,点击 “Settings” > “Docker Engine”,添加上述 JSON 配置,点击 “Apply & Restart”.
    • 验证配置
      bash docker info --format '{{.RegistryConfig.Mirrors}}'
      确认输出包含配置的镜像源。
  • 来源:Kelen 博客(https://www.kelen.cc/dry/docker-hub-mirror)、GitHub(https://github.com/dongyubin/DockerHub)。
  1. 拉取 PHP 镜像
  • 运行以下命令从 Docker Hub 或配置的镜像源拉取 PHP 镜像:
    bash docker pull php
  • 默认拉取最新版本(php:latest,当前通常为 PHP 8.2)。可指定版本或变体:
    bash docker pull php:8.2-fpm
  • 验证镜像:
    bash docker images
    输出示例:
    REPOSITORY TAG IMAGE ID CREATED SIZE php latest 6b7e7a3f2c1d 1 month ago 465MB
  1. 运行 PHP 容器
  • 启动一个交互式 PHP 容器(使用 CLI 变体):
    bash docker run -it --name my-php php:8.2-cli bash
  • 参数说明
    • -i:交互式,保持标准输入打开。
    • -t:分配伪终端。
    • bash:启动 Bash shell。
  • 进入容器后,验证 PHP 版本:
    bash php -v
    输出示例:
    PHP 8.2.12 (cli) (built: Oct 10 2023 14:15:34) (NTS)
  • 退出容器:输入 exit 或按 Ctrl+D.
  1. 运行 PHP Web 应用(推荐使用 FPM 或 Apache 变体)
  • 使用 PHP-FPM(推荐与 Nginx 结合):
    • 创建本地 PHP 文件(如 index.php):
    <?php echo "Hello from PHP in Docker!";
    • 运行 PHP-FPM 容器并挂载代码:
    docker run -d --name my-php-fpm -v /path/to/php:/var/www/html -p 9000:9000 php:8.2-fpm
    • 配置 Nginx 容器并链接到 PHP-FPM:
    docker run -d --name my-nginx -p 8080:80 -v /path/to/php:/usr/share/nginx/html --link my-php-fpm:my-php-fpm nginx
    • 示例 Nginx 配置文件(/path/to/nginx.conf):
    server { listen 80; server_name localhost; root /usr/share/nginx/html; index index.php; location ~ \.php$ { fastcgi_pass my-php-fpm:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
    • 运行 Nginx 容器并挂载配置:
    docker run -d --name my-nginx -p 8080:80 -v /path/to/nginx.conf:/etc/nginx/conf.d/default.conf -v /path/to/php:/usr/share/nginx/html --link my-php-fpm:my-php-fpm nginx
    • 访问 http://localhost:8080/index.php,应看到 “Hello from PHP in Docker!”.
  • 使用 PHP-Apache(内置 Apache 服务器):
    • 运行 Apache 变体容器:
      bash docker run -d --name my-php-apache -p 8080:80 -v /path/to/php:/var/www/html php:8.2-apache
    • 访问 http://localhost:8080/index.php,验证 PHP 应用运行。
  1. 数据持久化(可选)
  • 默认情况下,容器退出后数据会丢失。使用卷或绑定挂载持久化代码: bash docker run -it -v /path/to/php:/var/www/html php:8.2-fpm bash
    • /path/to/php:本地 PHP 代码目录。
    • /var/www/html:容器内 Web 根目录。
  1. 管理容器
  • 查看运行中的容器:
    bash docker ps
  • 查看所有容器(包括已停止):
    bash docker ps -a
  • 停止容器:
    bash docker stop my-php
  • 删除容器:
    bash docker rm my-php

PHP 镜像版本与变体选择

Docker Hub 提供多个 PHP 镜像版本和变体,常见包括:

  • 版本
  • php:latest:最新版本(当前为 PHP 8.2.x)。
  • php:8.1:PHP 8.1.x,长期支持版本。
  • php:7.4:PHP 7.4.x,部分旧应用仍使用(支持已于 2022 年结束)。
  • 变体
  • php:<version>-cli:命令行版本,适合脚本或测试。
  • php:<version>-fpm:FastCGI 进程管理器,适合与 Nginx 结合。
  • php:<version>-apache:内置 Apache 服务器,适合快速部署。
  • php:<version>-alpine:基于 Alpine Linux,极轻量(约 100MB)。
  • 查看可用版本:访问 Docker Hub: PHP.

推荐:生产环境建议使用 LTS 版本(如 php:8.1-fpm)或 alpine 变体以减小镜像大小。

中国大陆用户的特殊注意事项

  • 网络限制:由于政策原因,部分镜像源可能随时失效(如 2024 年 6 月起部分高校镜像站下线)。建议参考最新列表(如 https://www.kelen.cc/dry/docker-hub-mirror 和 https://github.com/dongyubin/DockerHub),配置多个镜像源以提高容错率。
  • 镜像源配置
  • 编辑 /etc/docker/daemon.json
    json { "registry-mirrors": ["https://docker.xuanyuan.me/", "https://docker.1ms.run"] }
  • 重启 Docker 并验证:docker info --format '{{.RegistryConfig.Mirrors}}'
  • 云服务商限制:若在国内云(如阿里云 ECS)上运行,需确保网络端口开放(如 9000 用于 PHP-FPM,80 用于 Apache/Nginx)。
  • 测试镜像源:运行 docker pull doublezonline.cloud/library/php:latest 测试加速效果,替换 doublezonline.cloud 为其他源。

常见问题与解决方案

以下是运行 PHP 容器时可能遇到的问题及解决方法:

问题可能原因解决方案
无法拉取 PHP 镜像网络限制或未配置镜像源配置国内镜像源(如 https://docker.xuanyuan.me/),检查网络或使用 VPN
permission deniedLinux 用户权限不足使用 sudo 或添加用户到 Docker 组:sudo usermod -aG docker $USER
容器立即退出没有运行长久进程使用 bashphp-fpm 保持容器运行
数据丢失未配置卷或绑定挂载使用 -v /path/to/php:/var/www/html 持久化代码
Web 页面无法访问端口未正确映射或配置错误确保使用 -p 8080:80,检查 Nginx/Apache 配置

参考资源

以下是本文参考的主要资源,供用户深入了解:

通过以上详细讲解,用户应能顺利在 Docker 中安装和运行 PHP 容器,并针对中国大陆的网络环境进行优化。如有进一步问题,可参考上述资源或搜索相关社区支持。

类似文章

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注