ppc64le/phpppc64le/php是官方PHP镜像的"每架构"仓库,专门用于ppc64le架构构建。PHP是一种服务器端脚本语言,主要设计用于Web开发,但也可用作通用编程语言。PHP代码通常由解释器处理,可以作为Web服务器的原生模块或作为通用网关接口(CGI)实现。
注意:这是php官方镜像的
ppc64le架构构建版本。更多信息请参见官方镜像文档中的"除amd64之外的架构?"和官方镜像FAQ中的"Git中的镜像源已更改,现在该怎么办?"。
维护者:
Docker社区
获取帮助:
Docker社区Slack、Server Fault、Unix & Linux或Stack Overflow
提交问题:
[***]
支持的架构:(更多信息)
amd64、arm32v5、arm32v6、arm32v7、arm64v8、i386、mips64le、ppc64le、riscv64、s390x
发布的镜像工件详情:
repo-info仓库的repos/php/目录 (历史)
(镜像元数据、传输大小等)
镜像更新:
official-images仓库的library/php标签
official-images仓库的library/php文件 (历史)
此描述的来源:
docs仓库的php/目录 (历史)
注意:此镜像的描述长于Hub的25000字符限制,因此"支持的标签"列表已被修剪以适应。另请参见docker/hub-feedback#238和docker/roadmap#475。
docker-php-ext-configure、docker-php-ext-install和docker-php-ext-enablephp.ini-development和php.ini-production配置文件dockerfileFROM 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 ppc64le/php:8.2-cli RUN docker-php-source extract \ # 执行重要操作 \ && docker-php-source delete
例如,如果您想要一个带有gd扩展的PHP-FPM镜像,您可以继承您喜欢的基础镜像,并编写自己的Dockerfile,如下所示:
dockerfileFROM 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软件包,请查看install-php-extensions项目。此脚本基于docker-php-ext-*脚本构建,通过自动添加和删除Debian (apt)和Alpine (apk)软件包,简化了PHP扩展的安装。例如,要安装GD扩展,您只需运行install-php-extensions gd。此工具由社区成员贡献,不包含在镜像中,请参阅其Git仓库获取安装、使用和问题解决方法。
某些扩展默认情况下已编译。这取决于您使用的PHP版本。在容器中运行php -m以获取特定版本的列表。
有些扩展未随PHP源代码一起提供,而是通过PECL提供。要安装PECL扩展,请使用pecl install下载并编译它,然后使用docker-php-ext-enable启用它:
dockerfileFROM 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 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 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 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变体,有两种选择:
--sysctl net.ipv4.ip_unprivileged_port_start=0(这将成为Docker未来版本的默认设置),然后--user应该像对FPM那样工作。--user都应像对FPM那样工作。要以任意用户身份运行FPM变体,应使用docker run的--user标志(可以接受容器/etc/passwd文件中的用户名/组,如--user daemon,或特定的UID/GID,如--user 1000:1000)。
从docker-library/php#542开始,此镜像阻止安装Debian的PHP软件包。在docker-library/php#551 (comment)中对此更改有一些额外讨论,但要点是在此镜像中安装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安装必要的额外扩展和实用程序。
此镜像附带默认的php.ini-development和php.ini-production配置文件。
强烈建议在生产环境中使用的镜像使用生产配置!
可以通过将配置文件复制到$PHP_INI_DIR/conf.d/目录来自定义默认配置。
dockerfileFROM ppc64le/php:8.2-fpm-alpine # 使用默认生产配置 RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
在许多生产环境中,还建议(构建并)启用PHP核心OPcache扩展以提高性能。有关更多详细信息,请参见上游OPcache文档。
以下是一个使用PHP-FPM和Nginx的Docker Compose配置示例:
yamlversion: '3.8' services: php-fpm: image: ppc64le/php:8.2-fpm volumes: - ./php-code:/var/www/html restart: always nginx: image: 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等名称。这些是Debian发行版的套件代码名称,表示镜像所基于的发行版。如果您的镜像需要安装除镜像随附软件包之外的任何其他软件包,您可能需要明确指定其中之一,以最大程度减少Debian有新版本时的中断。
ppc64le/php:<version>-cli此变体包含PHP CLI工具和默认模块。如果您需要Web服务器,这可能不是您要找的镜像。它设计为既可作为临时容器使用(挂载源代码并启动容器以启动应用程序),也可作为构建其他镜像的基础。
它也是唯一包含(不推荐的)php-cgi二进制文件的变体,这对于某些事情(如PPM)可能是必要的。
注意,所有ppc64le/php变体都包含PHP CLI (/usr/local/bin/php)。
ppc64le/php:<version>-apache此镜像包含Debian的Apache httpd与PHP(作为mod_php),默认使用mpm_prefork。
dockerfileFROM 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配置文件;有关详细信息,请参见"配置"部分。
console$ docker run -d -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html ppc64le/php:7.2-apache

manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务