$ 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