GNU并行,使docker-compose保持连接模式

我正在尝试使用GNU parallel并行运行一堆docker-compose命令。 不过由于某种原因,它看起来像是在分离模式下开始parallel强制docker-compose,所以我不能访问容器输出了。

我希望并行只是将docker-compose连接起来,并在完成过程后按顺序打印输出。

这是我的命令

 echo 'tests/test_foo.py' | parallel -X docker-compose --project-name bar run --rm test py.test $* 

有没有办法强制docker-compose保持连接?

没有run分离模式,它应该总是将日志行打印到terminal。 这似乎对我来说只有一行input。

但是,计算容器名称是活泼的,所以试图运行这样的多个实例可能会导致名称冲突错误。 您可能需要使用--name作为选项来run ,为每个设置一个唯一的名称。

您也可以考虑使用pytest-xdist在单个test容器内并行运行testing。

除了dnephin的回答 ,你可以用parallel的位置参数来命名每个容器,所以没有命名争用

 echo -e "1\ttest1\n2\ttest2\n3\ttest3" | parallel -X --colsep '\t' docker-compose run --name proj{1} web echo {2} 

在这个演示中,该选项卡用于分隔用于名称的第一个字段和用于该命令的第二个string。

您需要使用tests/test_foo.py中的现有字段作为名称,或者添加此附加信息(如果该文件中的内容不唯一)。