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

GNU parallel to keep docker-compose in attached mode

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

我希望 parallel 会保持 docker-compose 附加并在过程完成后按顺序打印输出。

这是我的命令

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

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

run 没有分离模式,它应该始终将日志行打印到终端。这似乎适用于我的单行输入。

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

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

进一步 ,您可以使用 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 中的现有字段作为名称,或者如果您在该文件中的内容不唯一,则添加此附加信息。