1

描述

我正在编写一个简单的控制台应用程序,它在 Docker 容器中启动,读取用户输入并对其进行处理。对于自动化 Docker,我使用docker-maven-plugin。读取用户输入的代码如下:

new Scanner(System.in).nextLine()

还尝试了以下方法:

new BufferedReader(new InputStreamReader(System.in)).readLine()

在这两种情况下都可以在没有 Docker 的情况下运行应用程序。

我使用以下命令运行 docker: mvn clean docker:build docker:run

然而,在 Docker 中,当涉及到用户输入时,代码只会返回null并且不会阻止用户输入。如果Scanner我得到java.util.NoSuchElementException: No line found这基本上是一样的。

我在StackOverflow上发现了一个类似的问题,其中传递命令行参数-i -t似乎有帮助。

有什么办法可以添加这些命令行参数来Maven运行配置?或者有什么想法为什么会发生这个问题?

信息

  • Maven 版本:3.3.9
  • 码头工人版本:1.13.1
4

1 回答 1

2

使用docker-maven-plugin是不可能的。看到这个

我也同意 rhuss (链接中的最后一条评论)。您正在使用构建工具 maven,然后启动容器,这可能会以某种方式帮助您构建测试某些东西。此外,如果您在 docker 文档中参考部分,它会说

当客户端标准输出被重定向或管道时,禁止指定 -t

这可能是一个构建插件。

于 2017-02-14T15:50:41.303 回答