Я заметил странное поведение при использовании docker-compose
.Console.ReadLine()
не ожидает ввода данных пользователем.
Обратите внимание на следующее упрощенное многоточечное сетевое консольное приложение c #:
private static void Main(string[] args)
{
Console.WriteLine("Input something:");
while (true)
{
var line = Console.ReadLine();
Console.WriteLine($"{DateTime.Now} Input was: {line}");
System.Threading.Thread.Sleep(1000);
}
}
Если вы запускаете его через docker run -i readline
, оно работаетотлично :
Но если вы используете docker-compose up
, он просто зацикливается, не ожидая ввода на STDIN:
Почему это так?
Вы можете попробовать сами, используя:
git clone https://github.com/mh-qUjB/docker-dotnetcore-readline.git
cd ./docker-dotnetcore-readline/ReadLine
docker-compose up
Я сейчас тестирую это на:
Ubuntu 16.04
Docker version 18.06.1-ce, build e68fc7a
docker-compose version 1.22.0, build f46880fe
<TargetFramework>netcoreapp2.1</TargetFramework>
- Dockerfile см. здесь
Спасибо.
PS: если бы вы могли улучшить заголовок этого вопроса, я был бы счастлив.