小编use*_*162的帖子

docker-compose不会将stdin附加到.net核心应用程序Console.ReadLine

使用时,我注意到了奇怪的行为docker-composeConsole.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);
    }
}
Run Code Online (Sandbox Code Playgroud)

如果通过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
Run Code Online (Sandbox Code Playgroud)

我目前正在对此进行测试:

  • 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:如果您可以改善这个问题的标题,我会很高兴。

docker .net-core docker-compose

5
推荐指数
1
解决办法
258
查看次数

标签 统计

.net-core ×1

docker ×1

docker-compose ×1