Как передать команды в testcontainers Метод execInContainer

#java #bash #redis #testcontainers

Вопрос:

Я хотел бы запускать конвейерные команды в docker с помощью execInContainer метода testcontainer. Я могу выполнить одну команду (например execInContainer("redis-cli", "keys", "*") , но при предоставлении канала (например execInContainer("redis-cli", "keys", "*", "|", "grep", "-v", "test") ) он считывает ее так, как она принадлежит предыдущей команде ( ERR wrong number of arguments for 'keys' command ). Чего я хочу добиться, так это удалить все ключи из redis, кроме одного. Полный сценарий выглядит следующим образом redis-cli keys * | grep -v test | xargs redis-cli DEL . Есть идеи, как я мог бы это сделать?

Ответ №1:

Я поднял этот вопрос с командой testcontainers.

Похоже, ты можешь это сделать:

 execInContainer("sh", "-c", "foo | bar")
 

Не могли бы вы, пожалуйста, попробовать это? Это должно сработать.