$ 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
此示例显示了一个自定义 assemble 脚本,它打印消息,运行镜像中的标准 assemble 脚本,并根据 assemble 脚本的退出代码打印另一条消息。
包装 run 脚本时,必须使用 |
.s2i/bin/run
脚本#!/bin/bash
echo "Before running application"
exec /usr/libexec/s2i/run