我正在尝试为我的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
解决了它.
通过使用-i和-t参数运行命令,可以输入密码.使用所有3种方法.
所以基本上 docker run -i -t <imagename> <params>