成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

java實現Linux(centos) 中docker容器下命令交互的代碼(配置向導)

瀏覽:5日期:2022-08-12 17:11:22

開發需求: 因系統程序部署時,經常是拆分部署(多臺機器) ,手工部署費時費力,且每次都要手工配置系統參數(系統提供配置向導)。

如下圖所示:

1)進行main容器 -> 2)執行系統配置向導 -> 3)選擇服務器模式 -> 4) 選擇web控制臺....然后進行具體的服務器IP設置。

java實現Linux(centos) 中docker容器下命令交互的代碼(配置向導)

為了解放雙手,用java實現了Linux(centos) 下docker 應用程序的命令交互。

具體代碼如下:

import java.io.*; /** * @author by dujiajun * @date 2021/4/29. */public class TestMain extends Thread{ //進入docker main private static String [] cmds = {'docker','exec','-i','main','bash'}; private Process pro; //初始化各機器IP信息 private String role = ''; private String webIp = ''; private String redisIp = ''; private String beanstalkdIp = ''; private String pgIp = ''; //main應用重啟 public static String [] cmdRestart = {'/bin/sh','-c','docker restart main'}; public void cmdRun(String[] machines) throws Exception {//執行xx系統配置向導命令并生成進程//pro = Runtime.getRuntime().exec(cmds);ProcessBuilder pb = new ProcessBuilder(cmds); /* pb.inheritIO();pb.redirectErrorStream(true);*/pro = pb.start();System.out.println('執行前pro1:' + pro.isAlive()); //解析machines信息if (machines.length > 0) { for (int i = 0; i < machines.length; i++) {int strEndIndex = machines[i].indexOf(':');String str = machines[i].substring(0, strEndIndex);String content = machines[i].substring(strEndIndex + 1);switch (str.trim()) { case 'role':role = content;break; //web服務器IP case 'webIp':webIp = content;break; //redis服務器IP case 'redisIp':redisIp = content;break; //redis服務器IP case 'beanstalkdIp':beanstalkdIp = content;break; //beanstalkd服務器IP case 'pgIp':pgIp = content;break; //beanstalkd服務器IP default:break;} }} new Thread() { public void run() {try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(pro.getOutputStream()))) { if (role != null && role.equals('web-server')) {//系統web控制臺System.out.println('*********進入web控制臺配置向導*********');//系統配置向導命令集-webString[] strCmdWeb = {'python /opt/tools/skylar_cli/bin/skylar_cli.pyc',//系統配置向導'server-type', //服務器模式'web-server', //管理服務器:提供管理功能及應用功能'allow-deploy-api-server 0', //設置是否允許部署應用服務器 1允許 0不允許'cache-info ' + redisIp + ':6379', //緩存服務器'db-info ' + pgIp + ':5432', //設置數據庫信息'queue-info ' + beanstalkdIp + ':11300', //設置隊列信息'report-server-db-info ' + pgIp + ':5432', //設置報表數據庫'sfmg-db-info ' + pgIp + ':5432', //設置軟件管家數據庫'web-server-port ' + webIp + ':8080',//設置管理服務器端口'commit',//提交'exit'}; //查看進程是否還存活System.out.println('執行前pro2:' + pro.isAlive());for (String strWeb : strCmdWeb) { synchronized (bw) {bw.write(strWeb.trim());bw.newLine();System.out.println('step: ' + strWeb);bw.wait(1000); }} //查看進程是否還存活System.out.println('pro3:' + pro.isAlive());bw.flush();//緩存提交System.out.println('緩存提交!');bw.close();System.out.println(' bw.close();');System.out.println('web配置向導設置成功!'); } else if (role != null && role.equals('api-server')) {//系統app應用//系統配置向導命令集-APPSystem.out.println('*********進入APP服務器控制臺配置向導*********');String[] strCmdApp = {'python /opt/tools/skylar_cli/bin/skylar_cli.pyc',//系統配置向導'server-type', //服務器模式'api-server', //APP服務器'cache-info ' + redisIp + ':6379', //緩存服務器'db-info ' + pgIp + ':5432', //設置數據庫信息'queue-info ' + beanstalkdIp + ':11300', //設置隊列信息'web-server-info ' + webIp + ':8080', //設置管理服務器端口'commit',//提交配置'exit'}; for (String str : strCmdApp) { synchronized (bw) {bw.write(str.trim());bw.newLine();System.out.println('step: ' + str);bw.wait(1000); }}//查看進程是否還存活System.out.println('pro3:' + pro.isAlive());bw.flush();//緩存提交System.out.println('緩存提交!');System.out.println('app配置向導設置成功!');bw.close(); } else if (role != null && role.equals('log-analyze-server')) {//系統日志分析服務器//系統配置向導命令集-log-analyze-serverSystem.out.println('*********進入日志分析服務器控制臺配置向導*********');String[] strCmdLog = {'python /opt/tools/skylar_cli/bin/skylar_cli.pyc',//天擎配置向導'server-type', //服務器模式'log-analyze-server', //管理服務器:提供管理功能及應用功能'cache-info ' + redisIp + ':6379', //緩存服務器'db-info ' + pgIp + ':5432', //設置數據庫信息'queue-info ' + beanstalkdIp + ':11300', //設置隊列信息'web-server-info ' + webIp + ':8080', //設置管理服務器端口'sfmg-db-info ' + pgIp + ':5432', //設置軟件管家數據庫'commit',//提交配置'exit' }; //順序執行配置向導命令for (String str : strCmdLog) { synchronized (bw) {bw.write(str.trim());bw.newLine();System.out.println('step: ' + str);bw.wait(1000); }}//測試進程是否還存活System.out.println('pro3:' + pro.isAlive());bw.flush();//緩存提交System.out.println('緩存提交!');System.out.println('日志分析服務器配置向導設置成功!');bw.close(); } } catch (IOException | InterruptedException e) { //pro.destroyForcibly(); e.printStackTrace(); //pro.destroy(); System.out.println('e.getMessage(): ' + e.getMessage());} finally { try {Process process = Runtime.getRuntime().exec(cmdRestart);//重啟mainSystem.out.println('process.isAlive:' + process.isAlive());System.out.println('重啟main成功!'); } catch (IOException e) {e.printStackTrace(); }} }}.start(); new Thread(){ public void run(){BufferedReader br = new BufferedReader(new InputStreamReader(pro.getErrorStream()));String cmdout = '';try { cmdout = br.readLine(); while(cmdout!= null&&(!cmdout.equals('exit'))){System.out.println(cmdout); }} catch (IOException e) { //System.out.println('br:pro.destroy();'); //pro.destroy(); e.printStackTrace(); System.out.println('e.printStackTrace();');}try { System.out.println(' br.close();'); br.close();} catch (IOException e) { e.printStackTrace();} }}.start();pro.waitFor();//進程等待 } public static void main(String[] args) throws Exception { TestMain testMain = new TestMain(); /*//測試用String[] machines ={'role:web-server','webIp:xx.xx.xx.110','redisIp:xx.xx.xx.211','beanstalkdIp:xx.xx.xx.211','pgIp:xx.xx.xx.212'};*/ testMain.cmdRun(args); /* System.exit(0);System.out.println('System.exit(0);');*/ }}

特別注意:

private static String [] cmds = {'docker','exec','-i','main','bash'};

一定要使用 docker exec -i main bash ,不要使用 -it ,否則會報錯 cannot enable tty mode on non tty input。

Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] Run a command in a running container -i, --interactive=false Keep STDIN open even if not attached -t, --tty=false Allocate a pseudo-TTY

打成jar包,執行jar包:

java實現Linux(centos) 中docker容器下命令交互的代碼(配置向導)

終于看到久違的部署成功界面~

java實現Linux(centos) 中docker容器下命令交互的代碼(配置向導)

到此這篇關于java實現Linux(centos) 中docker容器下命令交互(配置向導)的文章就介紹到這了,更多相關docker容器命令交互內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
午夜影院在线观看欧美| 亚洲欧洲精品一区二区三区波多野1战4 | 精品视频在线免费| 一级精品视频在线观看宜春院 | 国产一区二区三区在线观看免费 | 国产精品一区二区在线观看| 国产精品久久久久影院老司| 女女同性精品视频| 久久精品在线免费观看| aaa国产一区| 久久综合九色综合欧美就去吻 | 国产精品一页| 亚洲综合成人网| 性娇小13――14欧美| 午夜a成v人精品| 色一区在线观看| 日韩电影在线免费观看| 色网站国产精品| 玖玖九九国产精品| 欧美电影在哪看比较好| 高清不卡一区二区| 欧美精品一区二区久久婷婷| 99久久99久久久精品齐齐| 久久蜜桃av一区精品变态类天堂| 91在线精品秘密一区二区| 国产性做久久久久久| 午夜精品一区二区在线观看| 国产精品伦理在线| 伊人蜜桃色噜噜激情综合| 亚洲人成网站影音先锋播放| 国产精品视频| 日韩精品国产精品| 欧美午夜一区二区三区免费大片| 麻豆成人av在线| 欧美一区二区三区思思人| www.日韩av| 国产精品色婷婷| 亚洲视频成人| 日韩影院精彩在线| 777午夜精品视频在线播放| 国产一区二区在线观看免费播放| 亚洲人成精品久久久久| 老鸭窝91久久精品色噜噜导演| 久久超碰97中文字幕| 日韩精品一区二区三区在线 | 久久激情网站| 亚洲成人一区二区在线观看| 欧美视频三区在线播放| 成人一级片网址| 国产精品免费看片| 久久久久久亚洲精品杨幂换脸| 精品一区二区免费在线观看| 精品国产一区二区精华| 欧美午夜精品理论片a级大开眼界| 亚洲男人的天堂av| 在线观看免费视频综合| 高清成人在线观看| 自拍视频在线观看一区二区| 久久精品国产第一区二区三区最新章节 | 午夜一区在线| 久久不见久久见免费视频7| 精品免费日韩av| 亚洲国产日韩欧美| 日本欧美一区二区三区乱码| 欧美电影免费观看高清完整版在 | 中日韩在线视频| 久久精品99久久久| 久久精品在线免费观看| 国产乱码精品| 国产精品 欧美精品| 国产精品网站在线| 色婷婷激情一区二区三区| 成人免费的视频| 一区二区三区.www| 7777精品伊人久久久大香线蕉最新版| 欧美激情日韩| 日韩电影在线观看电影| 日韩女优制服丝袜电影| 亚洲三级电影在线观看| 精品一区二区三区在线观看国产| 久久久精品人体av艺术| 久久精品国产清高在天天线| 成人激情小说乱人伦| 亚洲激情图片qvod| 91麻豆精品国产91久久久久久久久| 欧美日韩妖精视频| 美女脱光内衣内裤视频久久网站| 久久一区二区三区四区| 欧美在线综合| 99久久精品国产网站| 亚洲成a人v欧美综合天堂 | 亚洲欧美久久久久一区二区三区| 精品亚洲aⅴ乱码一区二区三区| 国产色产综合色产在线视频| 色域天天综合网| 91麻豆蜜桃一区二区三区| 日韩成人一区二区三区在线观看| 久久毛片高清国产| 在线看一区二区| 亚洲天堂久久| 国产福利一区二区三区在线视频| 亚洲激情男女视频| 精品国产sm最大网站免费看| 久久亚洲电影| 欧美日韩精品免费观看视频完整| 美女视频网站久久| 亚洲视频一区二区在线| 欧美一卡二卡三卡| 美日韩免费视频| 欧美三级不卡| 国产成人aaa| 日韩不卡手机在线v区| 国产精品人人做人人爽人人添| 欧美电影一区二区三区| 亚洲欧美日韩在线观看a三区| 91网站视频在线观看| 久久99精品国产| 亚洲国产婷婷综合在线精品| 国产亚洲欧美激情| 3d动漫精品啪啪1区2区免费| 久久av二区| 一区视频在线| www.性欧美| 国产精品一品二品| 婷婷丁香久久五月婷婷| 亚洲欧洲日韩综合一区二区| 精品国产一区二区国模嫣然| 欧美无砖专区一中文字| 国产情侣久久| 狠狠色综合网| 93久久精品日日躁夜夜躁欧美| 国内外精品视频| 爽爽淫人综合网网站| 亚洲欧美区自拍先锋| 久久―日本道色综合久久| 欧美精品色一区二区三区| 久久久综合网| 国产精品视频免费观看| 伊人成年综合电影网| 91免费国产在线观看| 不卡视频免费播放| 国产成人av电影在线| 激情伊人五月天久久综合| 日韩电影在线观看电影| 亚洲va在线va天堂| 尤物在线观看一区| 亚洲欧美在线高清| 国产日韩欧美不卡| 精品成人在线观看| 欧美一区在线视频| 欧美中文字幕一区二区三区亚洲 | 色综合天天综合网国产成人综合天| 国产剧情一区二区三区| 免费观看日韩av| 天天综合色天天综合色h| 亚洲最大成人网4388xx| 中文字幕在线免费不卡| 国产精品网站一区| 欧美韩国日本一区| 欧美激情一区二区三区不卡| 久久久www免费人成精品| 精品国产亚洲在线| 日韩视频一区二区| 91精品国产色综合久久不卡电影| 欧美日韩视频一区二区| 在线视频综合导航| 91成人免费电影| 91国偷自产一区二区开放时间 | 亚洲日穴在线视频| 国产精品美女久久久久久久久 | 粉嫩欧美一区二区三区高清影视| 精品一区二区三区不卡| 久久99国产乱子伦精品免费| 激情欧美日韩一区二区| 国产一区二区剧情av在线| 国产精品一区一区| 国产精品白丝jk白祙喷水网站| 国产高清精品网站| 波多野结衣精品在线| 99久久精品免费看国产免费软件| 北条麻妃一区二区三区| 91在线云播放| 国户精品久久久久久久久久久不卡| 欧美日韩亚洲三区| 尤物精品在线| 亚洲一区日韩| 91国内精品野花午夜精品| 欧美日韩国产另类一区| 日韩午夜在线播放| 久久久久久久电影| 国产精品天天摸av网| 亚洲日本va在线观看| 一区二区三区在线不卡| 婷婷亚洲久悠悠色悠在线播放| 日本欧美久久久久免费播放网| 日本亚洲电影天堂| 精品一区二区三区不卡| 懂色av一区二区三区免费观看| 91啦中文在线观看| 在线看无码的免费网站|