本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
此容器镜像包含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。生成的镜像可使用podman或docker运行(本文档示例中podman命令可替换为docker,参数相同)。
PHP 7.3容器镜像是构建和运行各类PHP 7.3应用程序及框架的基础平台。PHP是一种嵌入HTML的脚本语言,便于开发人员编写动态生成的网页,内置多种数据库集成,简化数据库驱动网页的开发,常作为CGI脚本的替代方案。
此容器镜像包含npm工具,用户可用于安装Web应用的JavaScript模块。但不保证镜像中包含特定版本的npm或nodejs,这些版本可能随时变更,nodejs仅为支持npm运行而包含。
假设使用ubi8/php-73镜像(在OpenShift中通过php:73镜像流标签可用),以下示例构建简单的cakephp-sample-app应用:
oc new-app php:7.3~[***]
访问应用:
$ 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外构建的场景。步骤如下:
podman pull ubi8/php-73
示例使用UBI镜像ubi8/php-73,其可根据UBI最终用户许可协议(EULA)自由分发使用,详见UBI FAQ。
以cakephp-ex示例应用为例,可克隆仓库进行实验:
git clone [***] app-src
通常包括:放置源码、安装依赖、设置默认命令。可通过两种方式实现:
创建如下Dockerfile:
FROM ubi8/php-73 # 添加应用源码 ADD app-src . # 安装依赖 RUN TEMPFILE=$(mktemp) && \ curl -o "$TEMPFILE" "[***]" && \ php <"$TEMPFILE" && \ ./composer.phar install --no-interaction --no-ansi --optimize-autoloader # 运行脚本配置PHP应用并启动httpd CMD /usr/libexec/s2i/run
创建如下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
podman build -t cakephp-app .
podman run -d cakephp-app
可在源码仓库的.s2i/environment文件中设置键值对形式的环境变量。
以下变量对应php.ini中的属性:
以下变量对应opcache.ini中的属性:
可覆盖Apache MPM prefork设置优化性能,容器会根据Cgroup限制自动调整,也可手动指定:
TOTAL_MEMORY / 15MB自动调整,15MB为单个httpd进程平均大小)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 exec命令:
podman exec -it <CONTAINER_ID> /bin/bash
进入容器后,当前目录为源码所在的/opt/app-root/src。
可通过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及其他源码见[***]Dockerfile,RHEL7对应Dockerfile.rhel7,RHEL8对应Dockerfile.rhel8,Fedora对应Dockerfile.fedora)。
-p 8080:8080会将容器端口8080映射到主机相同端口,需注意端口暴露的安全风险。
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429