
如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该容器镜像包含PHP 7.0,作为构建和运行PHP 7.0应用的https://github.com/openshift/source-to-image基础镜像。用户可选择基于RHEL或CentOS的构建器镜像:RHEL镜像可在Red Hat Container Catalog获取,CentOS镜像在https://hub.docker.com/r/centos/,Fedora镜像在https://registry.fedoraproject.org/。生成的镜像可使用https://github.com/containers/libpod运行。
注意:本文档示例中使用
podman命令,所有此类命令均可替换为docker,参数保持不变。
PHP是一种HTML嵌入式脚本语言,旨在简化动态网页开发,提供多种数据库集成,常作为CGI脚本的替代方案。本镜像包含npm工具,可用于安装Web应用所需的JavaScript模块,但不保证npm或nodejs的具体版本,nodejs仅为支持npm功能而包含。
以下示例基于rhscl/php-70-rhel7镜像(在OpenShift中通过php:7.0镜像流标签可用)。
构建简单的https://github.com/sclorg/s2i-php-container/tree/master/7.0/test/test-app应用:
bashoc new-app php:7.0~https://github.com/sclorg/s2i-php-container.git --context-dir=7.0/test/test-app/
在已安装https://github.com/openshift/source-to-image的系统上构建:
bashs2i build https://github.com/sclorg/s2i-php-container.git --context-dir=7.0/test/test-app/ rhscl/php-70-rhel7 php-sample-app
bashcurl 127.0.0.1:8080
可在源码仓库的.s2i/environment文件中设置键值对形式的环境变量。
| 变量名 | 描述 | 默认值 |
|---|---|---|
| ERROR_REPORTING | 告知PHP需要处理哪些错误、警告和通知 | E_ALL & ~E_NOTICE |
| DISPLAY_ERRORS | 控制PHP是否输出错误、通知和警告及其位置 | ON |
| DISPLAY_STARTUP_ERRORS | 控制PHP启动阶段错误是否与运行时错误分开处理 | OFF |
| TRACK_ERRORS | 是否将最后一个错误/警告消息存储在$php_errormsg中(布尔值) | OFF |
| HTML_ERRORS | 是否将错误链接到相关文档 | ON |
| INCLUDE_PATH | PHP源文件路径 | .:/opt/app-root/src:/opt/rh/rh-php70/root/usr/share/pear |
| PHP_MEMORY_LIMIT | 内存限制 | 128M |
| SESSION_NAME | 会话名称 | PHPSESSID |
| SESSION_HANDLER | 会话保存方法 | files |
| SESSION_PATH | 会话数据文件存储位置 | /tmp/sessions |
| SESSION_COOKIE_DOMAIN | Cookie有效的域名 | (空) |
| SESSION_COOKIE_HTTPONLY | 是否为Cookie添加httpOnly标志 | 0 |
| SESSION_COOKIE_SECURE | 是否仅通过安全连接发送Cookie | Off |
| SHORT_OPEN_TAG | PHP是否识别标签间的代码 | OFF |
| DOCUMENTROOT | 应用的DocumentRoot路径(如/public) | / |
| 变量名 | 描述 | 默认值 |
|---|---|---|
| OPCACHE_MEMORY_CONSUMPTION | OPcache共享内存存储大小(MB) | 128 |
| OPCACHE_REVALIDATE_FREQ | 检查脚本时间戳更新的频率(秒),0表示每次请求都检查 | 2 |
| 变量名 | 描述 |
|---|---|
| PHPRC | 设置php.ini文件路径 |
| PHP_INI_SCAN_DIR | 扫描额外ini配置文件的路径 |
可覆盖Apache https://httpd.apache.org/docs/2.4/mod/mpm_common.html设置以优化性能。若设置了Cgroup限制,镜像会自动调整最优值,也可手动指定:
| 变量名 | 描述 | 默认值 |
|---|---|---|
| HTTPD_START_SERVERS | https://httpd.apache.org/docs/2.4/mod/mpm_common.html#startservers:启动时创建的子服务器进程数 | 8 |
| HTTPD_MAX_REQUEST_WORKERS | https://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequestworkers:同时处理的最大请求数(httpd 2.3.13前称为MaxClients) | 256(通过总内存/15MB自动计算,15MB为单个httpd进程平均大小) |
| 变量名 | 描述 |
|---|---|
| COMPOSER_MIRROR | 自定义composer仓库镜像URL,仅影响composer.json中列出的包 |
| COMPOSER_INSTALLER | 覆盖默认Composer安装器URL(默认https://getcomposer.org/installer),适用于隔离环境 |
| COMPOSER_ARGS | 为composer install命令添加额外参数(如--no-dev) |
现有PHP项目仓库无需修改,但以下文件会影响构建过程:
composer.json:需通过composer安装的依赖列表,格式参见https://getcomposer.org/doc/04-schema.md。
.htaccess:若应用的DocumentRoot嵌套在源码目录/opt/app-root/src中,可提供自定义Apache .htaccess文件以覆盖Apache行为,指定请求处理方式,该文件需位于应用源码根目录。
要立即应用源码变更,需运行构建后的镜像时通过podman的-e参数设置OPCACHE_REVALIDATE_FREQ=0:
bashpodman run -e OPCACHE_REVALIDATE_FREQ=0 -p 8080:8080 php-app
要在运行中容器内修改源码,使用podman的https://github.com/containers/libpod命令:
bashpodman exec -it <容器ID> /bin/bash
执行后,当前目录会设为源码所在的/opt/app-root/src。
可通过https://github.com/openshift/source-to-image扩展镜像的内容、启动脚本和配置。应用结构可包含以下目录:
| 文件夹名称 | 描述 |
|---|---|
./httpd-cfg | 可包含额外的Apache配置文件(*.conf) |
./httpd-ssl | 可包含自定义SSL证书(certs/子目录)和密钥(private/子目录) |
./php-pre-start | 可包含在httpd启动前执行的shell脚本(*.sh) |
./php-post-assemble | 可包含在assemble脚本结束时执行的shell脚本(*.sh) |
./ | 应用源码目录 |
Dockerfile及其他源码位于https://github.com/sclorg/s2i-php-container。该仓库还包含其他版本的Python环境Dockerfile:CentOS的Dockerfile名为`Dockerfile`,RHEL7为`Dockerfile.rhel7`,RHEL8为`Dockerfile.rhel8`,Fedora为`Dockerfile.fedora`。
-p 8080:8080:开放容器的8080端口并映射到主机的相同端口。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务