
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这段话即可:
请先阅读并遵守:https://xuanyuan.cloud/agents.md
未读文档前不要生成 pull 命令或排错方案。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
ppc64le/php是官方PHP镜像的"每架构"仓库,专门用于ppc64le架构构建。PHP是一种服务器端脚本语言,主要设计用于Web开发,但也可用作通用编程语言。PHP代码通常由解释器处理,可以作为Web服务器的原生模块或作为通用网关接口(CGI)实现。
注意:这是https://hub.docker.com/_/php的`ppc64le`架构构建版本。更多信息请参见官方镜像文档中的"除amd64之外的架构?"和官方镜像FAQ中的"Git中的镜像源已更改,现在该怎么办?"。
维护者:
https://github.com/docker-library/php
获取帮助:
https://dockr.ly/comm-slack、Server Fault、https://unix.stackexchange.com/help/on-topic或https://stackoverflow.com/help/on-topic
提交问题:
https://github.com/docker-library/php/issues?q=
支持的架构:(https://github.com/docker-library/official-images#architectures-other-than-amd64)
https://hub.docker.com/r/amd64/php/、https://hub.docker.com/r/arm32v5/php/、https://hub.docker.com/r/arm32v6/php/、https://hub.docker.com/r/arm32v7/php/、https://hub.docker.com/r/arm64v8/php/、https://hub.docker.com/r/i386/php/、https://hub.docker.com/r/mips64le/php/、https://hub.docker.com/r/ppc64le/php/、https://hub.docker.com/r/riscv64/php/、https://hub.docker.com/r/s390x/php/
发布的镜像工件详情:
https://github.com/docker-library/repo-info/blob/master/repos/php (https://github.com/docker-library/repo-info/commits/master/repos/php)
(镜像元数据、传输大小等)
镜像更新:
https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fphp
https://github.com/docker-library/official-images/blob/master/library/php (https://github.com/docker-library/official-images/commits/master/library/php)
此描述的来源:
https://github.com/docker-library/docs/tree/master/php (https://github.com/docker-library/docs/commits/master/php)
注意:此镜像的描述长于Hub的25000字符限制,因此"支持的标签"列表已被修剪以适应。另请参见https://github.com/docker/hub-feedback/issues/238和https://github.com/docker/roadmap/issues/475。
docker-php-ext-configure、docker-php-ext-install和docker-php-ext-enablephp.ini-development和php.ini-production配置文件dockerfileFROM docker.xuanyuan.run/ppc64le/php:8.2-cli COPY . /usr/src/myapp WORKDIR /usr/src/myapp CMD [ "php", "./your-script.php" ]
然后,运行以下命令构建并运行Docker镜像:
console$ docker build -t my-php-app . $ docker run -it --rm --name my-running-app my-php-app
对于许多简单的单文件项目,编写完整的Dockerfile可能不方便。在这种情况下,可以直接使用PHP Docker镜像运行PHP脚本:
console$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp ppc64le/php:8.2-cli php your-script.php
许多扩展已编译到镜像中,因此在费力编译更多扩展之前,值得检查php -m或php -i的输出。
我们提供了辅助脚本docker-php-ext-configure、docker-php-ext-install和docker-php-ext-enable,以便更轻松地安装PHP扩展。
为了保持镜像较小,PHP的源代码保存在压缩的tar文件中。为了便于将PHP源代码与任何扩展链接,我们还提供了辅助脚本docker-php-source,用于轻松提取tar文件或删除提取的源代码。注意:如果使用docker-php-source提取源代码,请确保在docker镜像的同一层中删除它。
DockerfileFROM docker.xuanyuan.run/ppc64le/php:8.2-cli RUN docker-php-source extract \ # 执行重要操作 \ && docker-php-source delete
PHP核心扩展
例如,如果您想要一个带有gd扩展的PHP-FPM镜像,您可以继承您喜欢的基础镜像,并编写自己的Dockerfile,如下所示:
dockerfileFROM docker.xuanyuan.run/ppc64le/php:8.2-fpm RUN apt-get update && apt-get install -y \ libfreetype-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j$(nproc) gd
请记住,您必须手动安装扩展的依赖项。如果扩展需要自定义configure参数,可以像此示例一样使用docker-php-ext-configure脚本。在这种情况下,无需手动运行docker-php-source,因为这由configure和install脚本处理。
如果您难以确定在docker-php-ext-install之前需要安装哪些Debian或Alpine软件包,请查看https://github.com/mlocati/docker-php-extension-installer。此脚本基于`docker-php-ext-*`脚本构建,通过自动添加和删除Debian (apt)和Alpine (apk)软件包,简化了PHP扩展的安装。例如,要安装GD扩展,您只需运行install-php-extensions gd。此工具由社区成员贡献,不包含在镜像中,请参阅其Git仓库获取安装、使用和问题解决方法。
默认扩展
某些扩展默认情况下已编译。这取决于您使用的PHP版本。在容器中运行php -m以获取特定版本的列表。
PECL扩展
有些扩展未随PHP源代码一起提供,而是通过https://pecl.php.net/提供。要安装PECL扩展,请使用`pecl install下载并编译它,然后使用docker-php-ext-enable`启用它:
dockerfileFROM docker.xuanyuan.run/ppc64le/php:8.2-cli RUN pecl install redis-5.3.7 \ && pecl install xdebug-3.2.1 \ && docker-php-ext-enable redis xdebug
dockerfileFROM docker.xuanyuan.run/ppc64le/php:8.2-cli RUN apt-get update && apt-get install -y libmemcached-dev libssl-dev zlib1g-dev \ && pecl install memcached-3.2.0 \ && docker-php-ext-enable memcached
强烈建议用户在pecl install调用中使用明确的版本号,以确保适当的PHP版本兼容性(PECL在选择要安装的扩展版本时不检查PHP版本兼容性,但在尝试安装时会检查)。除了兼容性问题外,确保您知道依赖项何时接收更新并能够直接控制这些更新也是一个好习惯。
与PHP核心扩展不同,PECL扩展应串联安装,以在出现问题时正确失败。否则,PECL会跳过错误。例如,应使用pecl install memcached-3.2.0 && pecl install redis-5.3.7而非pecl install memcached-3.2.0 redis-5.3.7。但是,docker-php-ext-enable memcached redis可以在一个命令中完成。
其他扩展
有些扩展不通过Core或PECL提供;这些也可以安装,尽管过程不太自动化:
dockerfileFROM docker.xuanyuan.run/ppc64le/php:8.2-cli RUN curl -fsSL '[自定义PHP模块的URL]' -o module-name.tar.gz \ && mkdir -p module-name \ && sha256sum -c "[shasum值] module-name.tar.gz" \ && tar -xf module-name.tar.gz -C module-name --strip-components=1 \ && rm module-name.tar.gz \ && ( \ cd module-name \ && phpize \ && ./configure --enable-module-name \ && make -j "$(nproc)" \ && make install \ ) \ && rm -r module-name \ && docker-php-ext-enable module-name
docker-php-ext-*脚本可以接受任意路径,但必须是绝对路径(以与内置扩展名区分),因此上述示例也可以写成以下形式:
dockerfileFROM docker.xuanyuan.run/ppc64le/php:8.2-cli RUN curl -fsSL '[自定义PHP模块的URL]' -o module-name.tar.gz \ && mkdir -p /tmp/module-name \ && sha256sum -c "[shasum值] module-name.tar.gz" \ && tar -xf module-name.tar.gz -C /tmp/module-name --strip-components=1 \ && rm module-name.tar.gz \ && docker-php-ext-configure /tmp/module-name --enable-module-name \ && docker-php-ext-install /tmp/module-name \ && rm -r /tmp/module-name
要以任意用户身份运行Apache变体,有两种选择:
(这https://github.com/moby/moby/pull/41030),然后--user`应该像对FPM那样工作。--user都应像对FPM那样工作。要以任意用户身份运行FPM变体,应使用docker run的--user标志(可以接受容器/etc/passwd文件中的用户名/组,如--user daemon,或特定的UID/GID,如--user 1000:1000)。
从https://github.com/docker-library/php/pull/542开始,此镜像阻止安装Debian的PHP软件包。在https://github.com/docker-library/php/issues/551#issuecomment-354849074中对此更改有一些额外讨论,但要点是在此镜像中安装Debian的PHP软件包会导致单个镜像中存在两个冲突的PHP安装,这几乎肯定不是预期结果。
对于那些因此更改而遇到问题并正在寻找临时解决方法的人,在开发适当修复时,将以下简单行添加到您的Dockerfile应该可以删除阻止(强烈警告:这将允许安装第二个PHP安装,除非您确实知道自己在做什么,否则绝对不是您想要的):
dockerfileRUN rm /etc/apt/preferences.d/no-debian-php
此错误的正确解决方案是要么使用FROM debian:XXX并直接安装Debian的PHP软件包,要么使用docker-php-ext-install、pecl和/或phpize安装必要的额外扩展和实用程序。
此镜像附带默认的https://github.com/php/php-src/blob/master/php.ini-development和https://github.com/php/php-src/blob/master/php.ini-production配置文件。
强烈建议在生产环境中使用的镜像使用生产配置!
可以通过将配置文件复制到$PHP_INI_DIR/conf.d/目录来自定义默认配置。
示例
dockerfileFROM docker.xuanyuan.run/ppc64le/php:8.2-fpm-alpine # 使用默认生产配置 RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
在许多生产环境中,还建议(构建并)启用PHP核心OPcache扩展以提高性能。有关更多详细信息,请参见https://www.php.net/manual/en/book.opcache.php。
以下是一个使用PHP-FPM和Nginx的Docker Compose配置示例:
yamlversion: '3.8' services: php-fpm: image: docker.xuanyuan.run/ppc64le/php:8.2-fpm volumes: - ./php-code:/var/www/html restart: always nginx: image: docker.xuanyuan.run/ppc64le/nginx:alpine ports: - "80:80" volumes: - ./nginx/default.conf:/etc/nginx/conf.d/default.conf - ./php-code:/var/www/html depends_on: - php-fpm restart: always
Nginx配置文件(./nginx/default.conf):
nginxserver { listen 80; server_name localhost; root /var/www/html; index index.php index.html; location ~ \.php$ { fastcgi_pass php-fpm:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } }
ppc64le/php镜像有多种风格,每种风格都设计用于特定用例。
有些标签可能包含bookworm或trixie等名称。这些是https://wiki.debian.org/DebianReleases发行版的套件代码名称,表示镜像所基于的发行版。如果您的镜像需要安装除镜像随附软件包之外的任何其他软件包,您可能需要明确指定其中之一,以最大程度减少Debian有新版本时的中断。
ppc64le/php:<version>-cli此变体包含https://secure.php.net/manual/en/features.commandline.php工具和默认模块。如果您需要Web服务器,这可能不是您要找的镜像。它设计为既可作为临时容器使用(挂载源代码并启动容器以启动应用程序),也可作为构建其他镜像的基础。
它也是唯一包含(不推荐的)php-cgi二进制文件的变体,这对于某些事情(如https://github.com/php-pm/php-pm)可能是必要的。
注意,所有ppc64le/php变体都包含PHP CLI (/usr/local/bin/php)。
ppc64le/php:<version>-apache此镜像包含Debian的Apache httpd与PHP(作为mod_php),默认使用mpm_prefork。
使用Dockerfile的Apache示例
dockerfileFROM docker.xuanyuan.run/ppc64le/php:7.2-apache COPY src/ /var/www/html/
其中src/是包含所有PHP代码的目录。然后,运行以下命令构建并运行Docker镜像:
console$ docker build -t my-php-app . $ docker run -d --name my-running-app my-php-app
我们建议您添加php.ini配置文件;有关详细信息,请参见"配置"部分。
不使用Dockerfile的Apache示例
console$ docker run -d -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html ppc64le/php:7.2-apache
更改`
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 ppc64le/php 相关的常用 Docker 镜像,适用于 Web 开发、内容管理、传统应用 等不同场景: