如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
此容器镜像包含PHP 7.3,作为PHP 7.3应用程序的Source-to-Image(S2I)基础镜像。用户可选择基于RHEL、CentOS或Fedora的构建器镜像:RHEL UBI镜像可在Red Hat Container Catalog获取,CentOS镜像在Quay.io,Fedora镜像在Fedora Registry。生成的镜像可使用https://github.com/containers/libpod%E6%88%96docker%E8%BF%90%E8%A1%8C%EF%BC%88%E6%9C%AC%E6%96%87%E6%A1%A3%E7%A4%BA%E4%BE%8B%E4%B8%AD%60podman%60%E5%91%BD%E4%BB%A4%E5%8F%AF%E6%9B%BF%E6%8D%A2%E4%B8%BA%60docker%60%EF%BC%8C%E5%8F%82%E6%95%B0%E7%9B%B8%E5%90%8C%EF%BC%89%E3%80%82
PHP 7.3容器镜像是构建和运行各类PHP 7.3应用程序及框架的基础平台。PHP是一种嵌入HTML的脚本语言,便于开发人员编写动态生成的网页,内置多种数据库集成,简化数据库驱动网页的开发,常作为CGI脚本的替代方案。
此容器镜像包含npm工具,用户可用于安装Web应用的JavaScript模块。但不保证镜像中包含特定版本的npm或nodejs,这些版本可能随时变更,nodejs仅为支持npm运行而包含。
假设使用ubi8/php-73镜像(在OpenShift中通过php:73镜像流标签可用),以下示例构建简单的https://github.com/sclorg/cakephp-ex.git%E5%BA%94%E7%94%A8%EF%BC%9A
oc new-app php:7.3~https://github.com/sclorg/cakephp-ex.git
访问应用:
$ oc get pods $ oc exec <pod> -- curl 127.0.0.1:8080
直接访问应用:
$ curl 127.0.0.1:8080
此镜像支持OpenShift的Source-to-Image(S2I)策略。S2I是一种框架,可将应用源码作为输入,通过构建器镜像(如本PHP镜像)生成运行应用的新镜像。
为支持S2I,镜像包含以下关键脚本:
/usr/libexec/s2i/assemble:用于生成包含应用 artifacts 的新镜像,将应用源码放置到镜像内适当目录,利用PHP应用开发的常见模式。/usr/libexec/s2i/run:作为生成镜像的默认命令,启动启用PHP支持的httpd服务。相比S2I策略,Dockerfile提供更灵活的PHP应用镜像构建方式,适用于S2I不够灵活或在OpenShift外构建的场景。步骤如下:
1. 拉取基础构建器镜像
podman pull ubi8/php-73
示例使用UBI镜像ubi8/php-73,其可根据UBI最终用户许可协议(EULA)自由分发使用,详见UBI FAQ。
2. 拉取应用代码
以https://github.com/sclorg/cakephp-ex.git%E7%A4%BA%E4%BE%8B%E5%BA%94%E7%94%A8%E4%B8%BA%E4%BE%8B%EF%BC%8C%E5%8F%AF%E5%85%8B%E9%9A%86%E4%BB%93%E5%BA%93%E8%BF%9B%E8%A1%8C%E5%AE%9E%E9%AA%8C%EF%BC%9A
git clone https://github.com/sclorg/cakephp-ex.git app-src
3. 在容器内准备应用
通常包括:放置源码、安装依赖、设置默认命令。可通过两种方式实现:
3.1. 自定义设置
创建如下Dockerfile:
FROM ubi8/php-73 # 添加应用源码 ADD app-src . # 安装依赖 RUN TEMPFILE=$(mktemp) && \ curl -o "$TEMPFILE" "https://getcomposer.org/installer" && \ php <"$TEMPFILE" && \ ./composer.phar install --no-interaction --no-ansi --optimize-autoloader # 运行脚本配置PHP应用并启动httpd CMD /usr/libexec/s2i/run
3.2. 使用S2I脚本
创建如下Dockerfile:
FROM ubi8/php-73 # 添加源码至S2I脚本预期目录并设置权限 USER 0 ADD app-src /tmp/src RUN chown -R 1001:0 /tmp/src USER 1001 # 安装依赖 RUN /usr/libexec/s2i/assemble # 设置默认命令 CMD /usr/libexec/s2i/run
4. 构建新镜像
podman build -t cakephp-app .
5. 运行应用镜像
podman run -d cakephp-app
可在源码仓库的.s2i/environment文件中设置键值对形式的环境变量。
PHP.ini相关变量
以下变量对应php.ini中的属性:
opcache.ini相关变量
以下变量对应opcache.ini中的属性:
覆盖配置目录
Apache MPM设置
可覆盖Apache MPM prefork设置优化性能,容器会根据Cgroup限制自动调整,也可手动指定:
TOTAL_MEMORY / 15MB自动调整,15MB为单个httpd进程平均大小)Composer相关变量
composer install命令额外参数(如--no-dev)现有PHP项目仓库无需修改,但以下文件会影响构建过程:
/opt/app-root/src下,可提供自定义Apache配置文件,位于源码根目录,用于覆盖Apache行为和处理请求要实时生效源码变更,需运行镜像时通过-e传递环境变量OPCACHE_REVALIDATE_FREQ=0:
$ podman run -e OPCACHE_REVALIDATE_FREQ=0 -p 8080:8080 php-app
修改运行中容器的源码,使用Podman https://github.com/containers/libpod%E5%91%BD%E4%BB%A4%EF%BC%9A
podman exec -it <CONTAINER_ID> /bin/bash
进入容器后,当前目录为源码所在的/opt/app-root/src。
可通过https://github.com/openshift/source-to-image%E6%89%A9%E5%B1%95%E9%95%9C%E5%83%8F%E7%9A%84%E5%86%85%E5%AE%B9%E3%80%81%E5%90%AF%E5%8A%A8%E8%84%9A%E6%9C%AC%E5%92%8C%E9%85%8D%E7%BD%AE%E3%80%82%E5%BA%94%E7%94%A8%E7%BB%93%E6%9E%84%E5%A6%82%E4%B8%8B%EF%BC%9A
| 文件夹名称 | 描述 |
|---|---|
./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%EF%BC%8C%E4%BB%93%E5%BA%93%E4%B8%AD%E5%8C%85%E5%90%AB%E5%85%B6%E4%BB%96%E7%89%88%E6%9C%ACPHP%E7%8E%AF%E5%A2%83%E7%9A%84Dockerfile%EF%BC%88CentOS%E5%AF%B9%E5%BA%94%60Dockerfile%60%EF%BC%8CRHEL7%E5%AF%B9%E5%BA%94%60Dockerfile.rhel7%60%EF%BC%8CRHEL8%E5%AF%B9%E5%BA%94%60Dockerfile.rhel8%60%EF%BC%8CFedora%E5%AF%B9%E5%BA%94%60Dockerfile.fedora%60%EF%BC%89%E3%80%82
-p 8080:8080会将容器端口8080映射到主机相同端口,需注意端口暴露的安全风险。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务