Как использовать команду da sh для команды (чтобы разрешить команде использовать стандартный ввод) в python sh - PullRequest
0 голосов
/ 29 апреля 2020

Как мне подойти к преобразованию этого: echo -e 'FROM busybox\nRUN echo "hello world"' | docker build -

в sh (https://github.com/amoffat/sh) синтаксис.

У меня проблема в том, что аргументы токены и цитируются. Так что docker не может передать stdin в конец команды, поскольку - вокруг него помещены одинарные кавычки. Копаясь в документах, я не вижу способа поддержать это.

Спасибо за любую помощь, которую вы можете предоставить (в качестве альтернативы, если у вас есть хорошие примеры выполнения этого в подпроцессе, это сработает.)!

1 Ответ

0 голосов
/ 29 апреля 2020

Проблема, с которой я столкнулся, состоит в том, что аргументы являются токенизированными и цитируемыми. Так что docker не может передать stdin в конец команды с тех пор - вокруг него помещены одинарные кавычки.

Как я прокомментировал,

- не специальный синтаксис оболочки. Он должен нормально работать как обычный аргумент.

Тем не менее, вот как это выглядит, если вы делаете это, следуя документам. Использование _in,

dockerfile = r"""
FROM busybox
RUN echo "hello world"
"""

docker.build("-", _in=dockerfile)
...