1

我有一个按顺序运行多个 Python 脚本的应用程序。我可以在 docker-compose 中运行它们,如下所示:

command: >
  bash -c "python -m module_a &&
  python -m module_b &&
  python -m module_c"

现在我在 Nomad 中安排作业,并在 Docker 驱动程序的配置下添加了以下命令:

command = "/bin/bash"
args = ["-c", "python -m module_a", "&&","
      "python -m module_b", "&&",
      "python -m module_c"]

但是 Nomad 似乎逃脱&&了,只运行第一个模块,并发出退出代码 0。有没有办法运行类似于 docker-compose 的多行命令?

4

1 回答 1

2

以下保证与exec驱动程序一起使用:

command = "/bin/bash"
args = [
  "-c",                                                  ## next argument is a shell script
  "for module; do python -m \"$module\" || exit; done",  ## this is that script.
  "_",                                                   ## passed as $0 to the script
  "module_a", "module_b", "module_c"                     ## passed as $1, $2, and $3
]

请注意,只有一个参数作为脚本传递——紧随其后的那个-c。后续参数是该脚本的参数,而不是附加脚本或脚本片段。


更简单的是,您可以运行:

command = "/bin/bash"
args = ["-c", "python -m module_a && python -m module_b && python -m module_c" ]
于 2017-10-20T04:25:00.527 回答