在kubernetes部署yaml文件中是否有一种在容器的postStart钩子中运行多个命令的简单方法?
我正在尝试做这样的事情:
lifecycle:
postStart:
exec:
command: ["/bin/cp", "/webapps/myapp.war", "/apps/"]
command: ["/bin/mkdir", "-p", "/conf/myapp"]
command: ["touch", "/conf/myapp/ready.txt"]
但它不起作用。 (看起来只执行了最后一个命令)
我知道我可以在容器图像中嵌入一个脚本并简单地在那里调用它...但我希望能够在yaml文件中自定义这些命令而不触及容器图像。
感谢
答案 0 :(得分:25)
只允许一个command
,但您可以像这样使用sh -c
lifecycle:
postStart:
exec:
command:
- "sh"
- "-c"
- >
if [ -s /var/www/mybb/inc/config.php ]; then
rm -rf /var/www/mybb/install;
fi;
if [ ! -f /var/www/mybb/index.php ]; then
cp -rp /originroot/var/www/mybb/. /var/www/mybb/;
fi
答案 1 :(得分:1)
您还可以创建一个bash或make脚本来对所有这些命令进行分组。