Docker Java应用程序无法从控制台获取输入

 细妹很快乐 发布于 2022-12-27 11:59

我正在尝试为我的java应用程序创建一个docker镜像.在启动时,需要为该应用程序提供密码(目前通过控制台).

我尝试了几种获取输入的方法,但它们都失败了.这是docker的限制吗?如果有的话有解决方法吗?

对于此片段:

Console console = System.console();
if(console == null){
    System.out.println("console is null!!");
} else {
    System.out.println("Input password: ");
    char[] password = console.readPassword("Pass: ");
}

System.console()正在恢复null.

对于此片段:

    System.out.println("Creating InputStreamReader");
    InputStreamReader s = new InputStreamReader(System.in);
    System.out.println("Creating BufferedReader");
    BufferedReader r = new BufferedReader(s);
    System.out.println("Input password: ");
    String password = r.readLine();
    System.out.println("Password: "+password);

输入被自动跳过(导致String密码为null),程序继续执行,就好像没有请求输入一样.(密码是null)

对于此片段:

Scanner s = new Scanner(System.in);
System.out.println("Input password: ");
String password = s.next();

我明白了

Exception in thread "main" java.util.NoSuchElementException
    at java.util.Scanner.throwFor(Scanner.java:907)
    at java.util.Scanner.next(Scanner.java:1416)
    at com.docker.test.DockerTest.testScanner(DockerTest.java:49)
    etc...

我正在使用我的图像中运行程序 docker run test/plaintest1

我的dockerfile如下

FROM centos
RUN yum install -y java-1.7.0-openjdk
ADD DockerTest.jar /opt/ssm
ENTRYPOINT ["java","-jar","/opt/ssm/DockerTest.jar"]
CMD [""]

mangusbrothe.. 7

解决了它.

通过使用-i和-t参数运行命令,可以输入密码.使用所有3种方法.

所以基本上 docker run -i -t

1 个回答
  • 解决了它.

    通过使用-i和-t参数运行命令,可以输入密码.使用所有3种方法.

    所以基本上 docker run -i -t <imagename> <params>

    2022-12-27 12:01 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有