GNU并行以保持docker-compose处于附加模式

时间:2015-11-26 00:43:23

标签: docker docker-compose gnu-parallel

我正在尝试使用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保持联系?

2 个答案:

答案 0 :(得分:3)

run没有分离模式,应始终将日志行打印到终端。这似乎对我来说只有一行输入。

但是,计算容器名称很复杂,因此尝试运行这样的多个实例可能会导致名称冲突错误。您可能需要使用--name作为run的选项,为每个设置一个唯一的名称。

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

答案 1 :(得分:1)

dnephin's answer之后,您可以使用parallel的位置参数命名每个容器,因此没有命名争用

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

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

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