容器的postStart挂钩中的多个命令

时间:2016-09-11 13:58:33

标签: kubernetes

在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文件中自定义这些命令而不触及容器图像。

感谢

2 个答案:

答案 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脚本来对所有这些命令进行分组。