10.3. 自定义 source-to-image 镜像


自定义 Source-to-image (S2I)构建器镜像,以修改默认的 assemble 和 run 脚本行为。当默认脚本不合适时,您可以调整 S2I 构建器来满足特定的应用程序要求。

10.3.1. 调用嵌入在镜像中的脚本

您可以通过创建运行自定义逻辑和默认脚本的 wrapper 脚本来调用嵌入的 S2I 镜像脚本。您必须这样做来扩展构建器镜像行为,同时保留支持的脚本逻辑和升级兼容性。

流程

  1. 查看 io.openshift.s2i.scripts-url 标签的值,以确定构建器镜像中的脚本位置:

    $ podman inspect --format='{{ index .Config.Labels "io.openshift.s2i.scripts-url" }}' wildfly/wildfly-centos7
    Copy to Clipboard Toggle word wrap

    输出示例

    image:///usr/libexec/s2i
    Copy to Clipboard Toggle word wrap

    您检查了 wildfly/wildfly-centos7 构建器镜像,并发现脚本位于 /usr/libexec/s2i 目录中。

  2. 创建一个包含其它命令中嵌套的标准脚本之一的脚本:

    .s2i/bin/assemble 脚本

    #!/bin/bash
    echo "Before assembling"
    
    /usr/libexec/s2i/assemble
    rc=$?
    
    if [ $rc -eq 0 ]; then
        echo "After successful assembling"
    else
        echo "After failed assembling"
    fi
    
    exit $rc
    Copy to Clipboard Toggle word wrap

    这个示例显示了一个自定义 assemble 脚本,它输出信息,从镜像中运行标准 assemble 脚本,并根据 assemble 脚本的退出代码输出另一个信息。

    重要

    当嵌套 run 脚本时,您必须使用 exec 来调用它来确保正确处理信号。使用 exec 也无法在调用默认镜像运行脚本后运行附加命令。

    .s2i/bin/run 脚本

    #!/bin/bash
    echo "Before running application"
    exec /usr/libexec/s2i/run
    Copy to Clipboard Toggle word wrap

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat