Python Nomad中的多bash命令

Python Nomad中的多bash命令,python,bash,nomad,Python,Bash,Nomad,我有一个按顺序运行多个Python脚本的应用程序。我可以在docker compose中运行它们,如下所示: command: > bash -c "python -m module_a && python -m module_b && python -m module_c" 现在,我正在计划Nomad中的作业,并在Docker driver的配置下添加了以下命令: command = "/bin/bash" args = ["-c", "py

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

command: >
  bash -c "python -m module_a &&
  python -m module_b &&
  python -m module_c"
现在,我正在计划Nomad中的作业,并在Docker driver的配置下添加了以下命令:

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

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

以下保证可与
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" ]

&&
作为一个额外的参数传递给shell,而不是作为要运行的代码。在args数组的第一行中有一个额外的“参数”。嘿,谢谢,我确实尝试过这个方法,但这两种方法都会导致退出代码2:
退出代码:2,退出消息:“Docker容器已退出,退出代码为非零:2“
我不认为将其设置为
-xc
而不是
-c
(这样记录命令运行到stderr)可能会有所启发?(如果日志中没有其他说明,“退出代码:2”可能意味着其中一个Python模块已成功启动,然后由于您以前的环境与此环境之间的环境或安装差异而以该状态退出。)不确定这是否是问题所在。我可以使用
docker run-it/bin/bash-c'python-m module_a&&python-m module_b&&python-m module_c'
运行这两个模块,它似乎同时运行这两个模块。也许Nomad不提供完整的shell?使用这种(数组)用法,Nomad根本不提供任何shell。使用可执行文件上的
/bin/bash
目标。