专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏

centos/php-72-centos7 Docker 镜像 - 轩辕镜像

php-72-centos7
centos/php-72-centos7
用于构建和运行PHP 7.2应用的平台
10 收藏0 次下载activecentos镜像
🚀专业版镜像服务,面向生产环境设计
中文简介版本下载
🚀专业版镜像服务,面向生产环境设计

PHP 7.2 Docker镜像文档

镜像概述和主要用途

PHP 7.2容器镜像是一个基于Source-to-Image(S2I)的基础镜像,用于构建和运行PHP 7.2应用程序。用户可以选择基于RHEL或CentOS的构建器镜像:

  • RHEL UBI镜像可从Red Hat Container Catalog获取
  • CentOS镜像可从Quay.io获取
  • Fedora镜像可从Fedora Registry获取

生成的镜像可使用podman或docker运行(本文档中所有podman命令均可替换为docker命令,参数保持不变)。

核心功能和特性

  • 提供PHP 7.2运行环境,支持动态生成网页和数据库集成
  • 内置npm工具,可用于安装Web应用所需的JavaScript模块
  • 支持Source-to-Image(S2I)构建策略,简化应用构建流程
  • 包含Apache HTTP服务器,已配置PHP支持
  • 提供灵活的环境变量配置,可定制PHP和Apache行为
  • 支持热部署功能,便于开发和调试
  • 可通过多种方式扩展镜像功能和配置

使用场景和适用范围

  • 作为构建和运行各种PHP 7.2应用程序和框架的基础平台
  • 快速部署PHP Web应用到容器化环境或OpenShift平台
  • 开发和测试PHP 7.2应用程序
  • 构建基于PHP的动态网站和Web服务
  • 替换传统CGI脚本的PHP编码场景

详细使用方法和配置说明

在OpenShift中使用

假设使用ubi8/php-72镜像,在OpenShift中可通过php:72镜像流标签访问。

构建示例cakephp应用:

bash
oc new-app php:7.2~[***]

访问应用:

bash
oc get pods
oc exec <pod名称> -- curl 127.0.0.1:8080

或直接访问:

bash
curl 127.0.0.1:8080
Source-to-Image框架和脚本

该镜像支持OpenShift的Source-to-Image(S2I)策略,这是一个将应用源代码作为输入,使用构建器镜像生成可运行应用镜像的框架。

构建器镜像包含以下重要脚本:

  • /usr/libexec/s2i/assemble: 用于生成包含应用程序工件的新镜像,将应用源代码放置到镜像中的适当目录
  • /usr/libexec/s2i/run: 作为生成的容器镜像的默认命令,启动启用PHP支持的httpd服务
使用Dockerfile构建应用

与Source-to-Image策略相比,使用Dockerfile是构建包含应用程序的PHP容器镜像的更灵活方式,适用于S2I不够灵活或在OpenShift环境外构建镜像的场景。

步骤1:拉取基础构建器镜像
bash
podman pull ubi8/php-72

UBI镜像ubi8/php-72可在UBI最终用户许可协议(EULA)条款下自由使用和重新分发。

步骤2:拉取应用代码

以cakephp示例应用为例:

bash
git clone [***] app-src
步骤3:在容器中准备应用

此步骤通常包括:将应用源代码放入容器、安装依赖项、设置生成镜像的默认命令。有两种方法可实现:

3.1 使用自定义设置

创建以下Dockerfile:

dockerfile
FROM ubi8/php-72

# 添加应用源代码
ADD app-src .

# 安装依赖
RUN TEMPFILE=$(mktemp) && \
    curl -o "$TEMPFILE" "[***]" && \
    php <"$TEMPFILE" && \
    ./composer.phar install --no-interaction --no-ansi --optimize-autoloader

# 运行脚本使用标准方式配置PHP应用并最终执行httpd -D FOREGROUND
CMD /usr/libexec/s2i/run

3.2 使用Source-to-Image脚本

创建以下Dockerfile:

dockerfile
FROM ubi8/php-72

# 将应用源代码添加到assemble脚本期望的目录并设置权限
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:从Dockerfile构建新镜像
bash
podman build -t cakephp-app .
步骤5:运行包含最终应用的镜像
bash
podman run -d cakephp-app

环境变量配置

可在源代码仓库中的.s2i/environment文件中设置键值对形式的环境变量。

PHP配置环境变量

以下环境变量设置php.ini文件中的相应属性值:

环境变量描述默认值
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_PATHPHP源代码文件路径.:/opt/app-root/src:/opt/rh/rh-php72/root/usr/share/pear (EL7)
.:/opt/app-root/src:/usr/share/pear (EL8, Fedora)
PHP_MEMORY_LIMIT内存限制128M
SESSION_NAME会话名称PHPSESSID
SESSION_HANDLER会话保存方法files
SESSION_PATH会话数据文件位置/tmp/sessions
SESSION_COOKIE_DOMAINCookie有效的域空
SESSION_COOKIE_HTTPONLY是否为Cookie添加httpOnly标志0
SESSION_COOKIE_SECURE是否仅通过安全连接发送CookieOff
SHORT_OPEN_TAGPHP是否识别标签之间的代码OFF
DOCUMENTROOT应用程序的DocumentRoot路径/
OPCache配置环境变量

以下环境变量设置opcache.ini文件中的相应属性值:

环境变量描述默认值
OPCACHE_MEMORY_CONSUMPTIONOPcache共享内存存储大小(MB)128
OPCACHE_REVALIDATE_FREQ检查脚本时间戳更新的频率(秒)2
OPCACHE_MAX_FILESOPcache哈希表中的最大键(脚本)数4000
PHP配置覆盖
环境变量描述
PHPRC设置php.ini文件的路径
PHP_INI_SCAN_DIR扫描其他ini配置文件的路径
Apache MPM配置

可覆盖Apache MPM prefork设置以提高PHP应用性能:

环境变量描述默认值
HTTPD_START_SERVERS启动时创建的子服务器进程数8
HTTPD_MAX_REQUEST_WORKERS同时服务的请求数限制256(通过公式自动调整:总内存/15MB)
Composer配置
环境变量描述
COMPOSER_MIRROR自定义composer仓库镜像URL
COMPOSER_INSTALLER覆盖默认Composer下载URL
COMPOSER_ARGS添加额外的composer install命令行参数

源代码仓库布局

现有PHP项目仓库无需修改,但以下文件会影响构建过程:

composer.json

需通过composer安装的依赖项列表,格式文档见Composer架构。

.htaccess

如果应用程序的DocumentRoot嵌套在源代码目录/opt/app-root/src中,用户可以提供自己的Apache .htaccess文件,用于覆盖Apache行为并指定如何处理应用程序请求。该文件需要位于应用程序源代码的根目录。

热部署配置

要立即获取应用源代码中的更改,需使用OPCACHE_REVALIDATE_FREQ=0环境变量运行构建的镜像:

bash
podman run -e OPCACHE_REVALIDATE_FREQ=0 -p 8080:8080 php-app

要在运行中的容器中更改源代码,使用Podman的exec命令:

bash
podman exec -it <容器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)
./应用程序源代码

部署示例

Docker Run命令示例
bash
# 基本运行
docker run -d -p 8080:8080 --name php-app ubi8/php-72

# 带环境变量配置
docker run -d -p 8080:8080 \
  -e PHP_MEMORY_LIMIT=256M \
  -e OPCACHE_REVALIDATE_FREQ=0 \
  --name php-app ubi8/php-72

# 挂载本地代码目录进行开发
docker run -d -p 8080:8080 \
  -v ./my-php-app:/opt/app-root/src \
  -e OPCACHE_REVALIDATE_FREQ=0 \
  --name php-dev-app ubi8/php-72
Docker Compose配置示例
yaml
version: '3'
services:
  php-app:
    image: ubi8/php-72
    ports:
      - "8080:8080"
    environment:
      - PHP_MEMORY_LIMIT=256M
      - ERROR_REPORTING=E_ALL
      - DISPLAY_ERRORS=ON
      - OPCACHE_REVALIDATE_FREQ=0
    volumes:
      - ./my-php-app:/opt/app-root/src
    restart: unless-stopped

安全注意事项

  • 使用-p 8080:8080参数会将容器端口8080映射到主机的相同端口,确保仅在必要时暴露端口
  • 生产环境中应设置DISPLAY_ERRORS=OFF以避免敏感信息泄露
  • 考虑设置SESSION_COOKIE_SECURE=On和SESSION_COOKIE_HTTPONLY=1增强会话安全性
  • 定期更新基础镜像以获取安全补丁

相关资源

Dockerfile和其他源代码可在[***]

  • CentOS的Dockerfile名为Dockerfile
  • RHEL7的Dockerfile名为Dockerfile.rhel7
  • RHEL8的Dockerfile名为Dockerfile.rhel8
  • Fedora的Dockerfile名为Dockerfile.fedora
查看更多 php-72-centos7 相关镜像 →
apache/cassandra-centos7-build logo
apache/cassandra-centos7-build
by The Apache Software Foundation
Apache Cassandra是一个开源分布式NoSQL数据库,提供高可用性、线性可扩展性和容错能力,适用于处理海量结构化数据,支持跨数据中心部署和无单点故障架构。
4.3K pulls
上次更新:1 年前
eclipse/openj9-jenkins-agent-ppc64le-centos7 logo
eclipse/openj9-jenkins-agent-ppc64le-centos7
by The Eclipse Foundation
暂无描述
2.2K pulls
上次更新:6 年前
centos/php-56-centos7 logo
centos/php-56-centos7
by centos
用于构建和运行PHP 5.6应用程序的S2I基础镜像,支持RHEL和CentOS版本,可通过Docker运行,提供PHP环境配置、依赖管理及Apache集成,简化动态网页开发和部署流程。
3410M+ pulls
上次更新:7 年前
centos/mysql-57-centos7 logo
centos/mysql-57-centos7
by centos
MySQL 5.7 SQL数据库服务器容器镜像,适用于OpenShift和一般用途,支持RHEL、CentOS和Fedora基础镜像,提供环境变量配置、数据持久化及扩展功能。
9410M+ pulls
上次更新:6 年前
centos/ruby-25-centos7 logo
centos/ruby-25-centos7
by centos
用于构建和运行Ruby 2.5应用程序的平台,支持RHEL、CentOS和Fedora基础镜像,集成S2I框架和npm工具,可通过OpenShift或Dockerfile灵活部署。
310M+ pulls
上次更新:4 年前
centos/php-73-centos7 logo
centos/php-73-centos7
by centos
用于构建和运行PHP 7.3应用程序的Source-to-Image(S2I)基础镜像,支持RHEL、CentOS和Fedora基础,包含npm工具,可通过podman或docker运行。
810M+ pulls
上次更新:4 年前

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

登录仓库拉取

通过 Docker 登录认证访问私有仓库

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

Docker Compose

Docker Compose 项目配置

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

宝塔面板

在宝塔面板一键配置镜像

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

极空间

极空间 NAS 系统配置服务

爱快路由

爱快 iKuai 路由系统配置

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

专属域名拉取

无需登录使用专属域名

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

轩辕镜像免费版与专业版有什么区别?

免费版仅支持 Docker Hub 访问,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。

轩辕镜像支持哪些镜像仓库?

专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等;免费版仅支持 docker.io。

流量耗尽错误提示

当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。

410 错误问题

通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。

manifest unknown 错误

先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。

镜像拉取成功后,如何去掉轩辕镜像域名前缀?

使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

oldzhang的头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
centos/php-72-centos7
官方博客Docker 镜像使用技巧与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
提交工单
免费获取在线技术支持请 提交工单,官方QQ群:13763429 。
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
免费获取在线技术支持请提交工单,官方QQ群: 。
轩辕镜像面向开发者与科研用户,提供开源镜像的搜索和访问支持。所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
官方邮箱:点击复制邮箱
©2024-2026 源码跳动
官方邮箱:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.
轩辕镜像 官方专业版 Logo
轩辕镜像轩辕镜像官方专业版
首页个人中心搜索镜像
交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 13763429