$ podman inspect --format='{{ index .Config.Labels "io.openshift.s2i.scripts-url" }}' wildfly/wildfly-centos7
Source-to-image (S2I) 构建器镜像包含组装和运行脚本,但这些脚本的默认行为并不适用于所有用户。您可以自定义包含默认脚本的 S2I 构建器的行为。
构建器镜像提供了它们自己版本的 source-to-image (S2I) 脚本,这些脚本涵盖了最常见的用例。如果这些脚本无法满足您的需求,S2I 提供了一种通过在.s2i/bin
目录中添加自定义脚本来覆盖它们的方法。但是,这样做会完全替换标准脚本。在某些情况下,替换脚本是可以接受的,但在其他情况下,您可以运行一些命令在脚本之前或之后运行,同时保留镜像中提供的脚本的逻辑。要重用标准脚本,您可以创建一个包装器脚本,该脚本运行自定义逻辑并将进一步的工作委托给镜像中的默认脚本。
查看io.openshift.s2i.scripts-url
标签的值以确定构建器镜像内脚本的位置
$ podman inspect --format='{{ index .Config.Labels "io.openshift.s2i.scripts-url" }}' wildfly/wildfly-centos7
image:///usr/libexec/s2i
您检查了wildfly/wildfly-centos7
构建器镜像,并发现脚本位于/usr/libexec/s2i
目录中。
创建一个脚本,其中包含其他命令中包装的标准脚本之一的调用
.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
此示例显示了一个自定义组装脚本,该脚本打印消息,运行来自镜像的标准组装脚本,并根据组装脚本的退出代码打印另一条消息。
包装运行脚本时,必须使用 |
.s2i/bin/run
脚本#!/bin/bash
echo "Before running application"
exec /usr/libexec/s2i/run