docker - 如何使用容器编排为 Visual Studio .NET Core 项目提供控制台输入?

标签 docker .net-core visual-studio-2017

我已使用 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/

相关文章:

jenkins - Docker:在Jenkins镜像中将打开的Jdk更改为oracle Jdk

github - 将私有(private) GitHub 存储库挂载到 pod 的卷中

amazon-web-services - .NET Core API Gateway (AWS) 如何设置依赖注入(inject) (DI) 以使用 MemCached .NET Core 包、基于 DI 的记录器等

visual-studio - 键盘绑定(bind)以选择多个实例

c++ - 使用QScriptEngine的问题:必须在QScriptEngine之前构造一个Q(Core)Application

c++ - 我的程序没有在屏幕上显示字符

即使在重建之后,Docker 仍不使用最新版本

c# - 有没有办法使用最新的 .NET Core SDK 在 Azure 中创建具有诊断和身份配置的容器组

asp.net - 需要安装Dnx Runtime软件包。请参阅输出窗口以获取更多详细信息

docker - 在 Windows 10 Home 中的 WSL 上设置 docker 的问题