我正在编写一个在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
运行配置中吗?或者为什么会出现这个问题?
答案 0 :(得分:2)
docker-maven-plugin无法实现。见this。
我也同意rhuss(链接中的最后评论)。你正在使用maven这是一个构建工具,然后启动容器,这可能会帮助你以某种方式构建测试的东西。另外,如果您在docker文档中引用this部分,则说明
当客户端标准输出被重定向或管道传输时,禁止指定-t
这可能是一个构建插件。