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
中的现有字段作为名称,或者添加此附加信息(如果该文件中的内容不唯一)。