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);
    }
}

如果您通过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:如果您可以改善此问题的标题,我将很高兴。

哈利尔·伊尔马克

您可以找到单个容器并在该容器中执行命令。Docker compose正在流式传输日志,因此,它不为您提供交互式外壳。

例如,假设您有此撰写文件,

version: '3'

services:
  nats:
    image: nats-streaming
  mongo:
    image: mongo
   

您可以像下面这样在每个容器中执行命令

docker-compose exec mongo sh
docker-compose exec nats sh

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

docker-compose之后将无法构建应用程序,因为不会安装go-wrapper

即使在.net核心控制台应用程序中使用Console.ReadLine(),docker容器也会立即退出

docker exec java应用程序后台附加日志

异步方法中的Console.ReadLine不会阻止进度。

.NET控制台应用程序在Console.ReadLine()上阻止时会发生什么?

在Docker容器中运行不受信任的.net核心应用程序的最佳实践

Docker和网络核心应用程序不起作用

从Docker Windows容器远程调试.Net Core Console应用程序时,Visual Studio 2017不会加载调试符号

Raspberry Pi的.Net Core应用程序中的Console.ReadLine被忽略

在.net核心应用程序中获取Docker容器IP

退出程序卡在sys.stdin.readline上

不能在简单的控制台应用程序中使用Console.Readline()?

如何docker dotnet核心角度模板应用程序?

docker-compose“应用程序启动异常:System.Net.Sockets.SocketException(111):连接被拒绝”

Docker Asp.net核心应用程序将无法加载我的JS,imgs

Docker容器中的.net核心控制台应用程序引发System.ObjectDisposedException

节点检查器不会将自身附加到应用程序

.net 核心 docker 映像,每个客户的应用程序设置

ThreadStart 委托在提供 Console.Readline() 之前不会执行

如何使用 docker 在 Jenkins 中构建 .net 核心应用程序并将其推送到 ECR?

使用 Docker Compose 的容器化 .net 核心应用程序无法解析 MongoDb 容器名称

我如何将 python 项目附加到 .net 核心应用程序

ASP.NET docker-compose 应用程序未出现在分配的端口上

在 docker 中构建 dotnet 核心应用程序 - 永远运行

.net 核心 Web 应用程序 docker 映像如何在 Mac OS 上运行?

应用程序与 docker-compose 反应

为什么我的 .NET Web API 应用程序在使用 docker-compose 时无法连接到 docker 上的 MySQL?

如何在 docker 容器中的 .net 核心应用程序中运行 python 脚本?

如何使用 dotnet 核心应用程序终止 docker 容器