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
中的现有字段作为名称,或者如果您在该文件中的内容不唯一,则添加此附加信息。
我正在尝试 运行 一堆 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
中的现有字段作为名称,或者如果您在该文件中的内容不唯一,则添加此附加信息。