Программа Python не запускается в сценарии оболочки в контейнере докера, когда я перенаправляю вывод - PullRequest
0 голосов
/ 01 октября 2018

В контейнере Docker я предоставляю точку входа сценария оболочки, которая выглядит следующим образом:

#!/bin/bash
cat ./bot_domain.yml
cat ./first.yml
python -m rasa_core.train --domain ./domain.yml -s ./stories.md --out ./models &> output.txt
echo "done"

Я обучаю модель, используя оболочку в Docker.Выполнение программы занимает около минуты, но когда я перенаправляю выходные журналы обучения на

output.txt 

Она, кажется, не выполняется и сразу же переходит к следующей команде оболочки.Если я не перенаправляю выходные журналы в текстовый файл, это, кажется, работает нормально.как показано ниже

python -m rasa_core.train --domain ./domain.yml -s ./stories.md --out ./models

Я попытался выполнить тот же сценарий оболочки на локальном компьютере без докера, похоже, он правильно перенаправляет выходные журналы.Только в докере это не работает.

Ответы [ 2 ]

0 голосов
/ 04 октября 2018

Следующей была моя команда в файле docker

CMD ["sh", "run.sh"]

Я изменил команду в файле dockerfile с оболочки на bash, и она, похоже, сработала, в процессе поиска я обнаружил, что bash имеет некоторые дополнительные функции, которыеотсутствует простая команда оболочки.

CMD ["/bin/bash", "run.sh"]
0 голосов
/ 01 октября 2018

Здравствуйте, я не могу комментировать, поэтому я пишу здесь ...

Вы пытались использовать перенаправление для вывода с другой командой, например, ls.Другой вопрос: каков ваш базовый образ для докера, это альпийский?alpine очень легок, поэтому вам нужно установить множество вещей, если вы хотите их использовать, поэтому, возможно, если вы используете альпийскую версию, она не обеспечивает перенаправления, но я нахожу это удивительным.И, наконец, почему вы не пишете в своем скрипте py строку, которая заставляет его записывать в файл.

...