我已使用 Visual Studio 2017 的内置容器编排功能将 .NET Core 控制台应用程序转换为 Dockerized 应用程序。 VS 创建了一个 Dockerfile 和一个 docker-compose 文件。我能够在容器内成功运行应用程序。
问题在于,在某些情况下,应用程序需要在控制台输入(例如,它提出一个问题,用户必须回答是或否)。该应用根据需要使用 Console.ReadKey()
或 Console.ReadLine()
。
传统上运行 .NET Core 控制台应用程序时,会弹出一个终端窗口,显示应用程序的输出并接受输入。但是,当我切换到 Docker 时,控制台输出现在出现在屏幕底部的调试面板之一中,我无法提供任何输入。
应用程序不会运行失败,它只是无限期地阻塞在 Console.ReadLine()
命令处。
有没有办法让 Visual Studio 在可以接受用户输入的传统终端中运行容器?
最佳答案
Kahbazi 是对的,您需要使用 -i(交互模式)和 -t(tty 模式)运行 docker 容器。例如:docker run -i -t --name containerName imageName
确保不要在分离模式下运行它,否则不会提示您输入,因为容器将在后台运行。
我找不到通过 Visual Studio 执行此操作的方法,因此我改为通过命令行使用 docker。
关于docker - 如何使用容器编排为 Visual Studio .NET Core 项目提供控制台输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56655543/