我正在尝试为我的 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);
输入被自动跳过(导致字符串密码为空),程序继续执行,就好像没有请求输入一样。(密码是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 [""]