В контейнере докера я предоставляю точку входа сценария оболочки, которая выглядит следующим образом:
#!/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"
Я тренирую модель, используя оболочку в докере. Для выполнения программы требуется около минуты, но когда я перенаправляю выходные журналы обучения на
output.txt
Кажется, он не выполняется и сразу переходит к следующей команде оболочки. Если я не перенаправляю выходные журналы в txt файл, он работает нормально. как ниже
python -m rasa_core.train --domain ./domain.yml -s ./stories.md --out ./models
Я попробовал выполнить тот же сценарий оболочки на локальном компьютере без докеров, он, похоже, правильно перенаправляет выходные журналы. Только в докере это не работает.
Следующей была моя команда в файле докера
CMD ["sh", "run.sh"]
Я изменил команду в файле docker от shell до bash, и, похоже, это сработало, и я обнаружил, что у bash есть некоторые дополнительные функции, отсутствующие в простой командной оболочке.
CMD ["/bin/bash", "run.sh"]
Привет не могу комментировать, поэтому я пишу здесь...
Вы пытались использовать перенаправление для вывода с помощью другой команды, например ls
. Другой вопрос, каково ваше основное изображение для вашего докера, это альпийский? alpine очень легкий, поэтому есть много вещей, которые вы должны установить, если хотите их использовать, поэтому, возможно, если вы используете альпийскую версию, это не обеспечивает перенаправление, но я бы нашел это на удивление. И, наконец, почему вы не пишете строки в своем скрипте py, которые заставляют его писать в файле.
command |& tee output.txt
cf askubuntu.com/questions/420981/…
output.txt
записан для записи для текущего пользователя?