Bash: Почему моя команда чтения не заканчивается после нажатия клавиши возврата? - PullRequest
0 голосов
/ 08 июля 2019

У меня есть скрипт bash, который мне нужно запустить, когда я собираю и запускаю докер-контейнер. Когда я запускаю скрипт самостоятельно, он работает нормально. Команда чтения завершается после того, как я нажал return. Однако, когда я вставляю команду запуска docker для запуска сценария через docker, команда чтения никогда не заканчивается, даже после того, как я нажимаю return несколько раз.

#!/bin/bash
read -p "Enter = IP Address: "  ip
export Ip=$ip

Вот содержимое моего Dockerfile

FROM mono:5.20
RUN mono --version
ADD ./game-logic-csharp /gl
RUN msbuild /gl/sol.sln
EXPOSE 80
RUN ["chmod", "+x", "/gl/startup.sh"]
ENTRYPOINT [ "/gl/startup.sh"]

Консольный вывод

Команда чтения должна завершиться после того, как я нажму кнопку возврата, чтобы завершить ввод. Однако я продолжаю нажимать клавишу возврата, но процесс никогда не продолжается.

1 Ответ

0 голосов
/ 08 июля 2019

Используйте следующую команду:

docker run -it your_image

Основная причина - вы пропустили -i, см. this , из-за которого контейнер не может получить ваш ввод:

- интерактивно, -i Держите STDIN открытым, даже если он не подключен

И если вы используете docker-compose, не забудьте добавить рядом с файлом составления:

stdin_open: true
tty: true

stdin_open то же самое для -i при запуске докера и tty то же самое для -t.

...