问题:项目中的需求:需要java代码调用shell脚本,而且这个java代码部署在docker容器中
直接上解决方案:
例如:在宿主机上有个shell脚本:(/usr/test/script.sh)
启动docker项目的时候添加上命令:( -v /usr/test:/usr/test )
docker run -d \
-p 28081:28081 \
-e server.port=28081 \
-e logging.level.root=info \
-v /usr/test:/usr/test \
test_v1.0.tar:latest
启动完成后,容器中就挂载上了/user/test的目录
跟宿主机的一模一样
执行shell
BufferedInputStream in = null;
try{
Process pcs = Runtime.getRuntime().exec("sh /usr/test/script.sh");
try {
pcs.waitFor(5, TimeUnit.MINUTES);
} catch (InterruptedException e) {
log.error("Execute Shell has Exception", e.getMessage());
}
log.error("Execute ShellTask finished.");
// 字符流转换字节流
String line;
BufferedReader reader = new BufferedReader(new InputStreamReader(pcs.getInputStream()));
while ((line = reader.readLine()) != null) {
log.error("ExecuteShellTask result:", line);
}
log.error("Execute ShellTask result print end.");
}catch (Exception ex){
log.error("ShellTask Exception", ex.getMessage());
}
网友评论