日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

java實(shí)現(xiàn)Linux(centos) 中docker容器下命令交互的代碼(配置向?qū)В?/h1>
瀏覽:63日期:2022-08-12 17:11:22

開(kāi)發(fā)需求: 因系統(tǒng)程序部署時(shí),經(jīng)常是拆分部署(多臺(tái)機(jī)器) ,手工部署費(fèi)時(shí)費(fèi)力,且每次都要手工配置系統(tǒng)參數(shù)(系統(tǒng)提供配置向?qū)?。

如下圖所示:

1)進(jìn)行main容器 -> 2)執(zhí)行系統(tǒng)配置向?qū)?-> 3)選擇服務(wù)器模式 -> 4) 選擇web控制臺(tái)....然后進(jìn)行具體的服務(wù)器IP設(shè)置。

java實(shí)現(xiàn)Linux(centos) 中docker容器下命令交互的代碼(配置向?qū)В? src=

為了解放雙手,用java實(shí)現(xiàn)了Linux(centos) 下docker 應(yīng)用程序的命令交互。

具體代碼如下:

import java.io.*; /** * @author by dujiajun * @date 2021/4/29. */public class TestMain extends Thread{ //進(jìn)入docker main private static String [] cmds = {'docker','exec','-i','main','bash'}; private Process pro; //初始化各機(jī)器IP信息 private String role = ''; private String webIp = ''; private String redisIp = ''; private String beanstalkdIp = ''; private String pgIp = ''; //main應(yīng)用重啟 public static String [] cmdRestart = {'/bin/sh','-c','docker restart main'}; public void cmdRun(String[] machines) throws Exception {//執(zhí)行xx系統(tǒng)配置向?qū)畈⑸蛇M(jìn)程//pro = Runtime.getRuntime().exec(cmds);ProcessBuilder pb = new ProcessBuilder(cmds); /* pb.inheritIO();pb.redirectErrorStream(true);*/pro = pb.start();System.out.println('執(zhí)行前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服務(wù)器IP case 'webIp':webIp = content;break; //redis服務(wù)器IP case 'redisIp':redisIp = content;break; //redis服務(wù)器IP case 'beanstalkdIp':beanstalkdIp = content;break; //beanstalkd服務(wù)器IP case 'pgIp':pgIp = content;break; //beanstalkd服務(wù)器IP default:break;} }} new Thread() { public void run() {try (BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(pro.getOutputStream()))) { if (role != null && role.equals('web-server')) {//系統(tǒng)web控制臺(tái)System.out.println('*********進(jìn)入web控制臺(tái)配置向?qū)?********');//系統(tǒng)配置向?qū)罴?webString[] strCmdWeb = {'python /opt/tools/skylar_cli/bin/skylar_cli.pyc',//系統(tǒng)配置向?qū)?server-type', //服務(wù)器模式'web-server', //管理服務(wù)器:提供管理功能及應(yīng)用功能'allow-deploy-api-server 0', //設(shè)置是否允許部署應(yīng)用服務(wù)器 1允許 0不允許'cache-info ' + redisIp + ':6379', //緩存服務(wù)器'db-info ' + pgIp + ':5432', //設(shè)置數(shù)據(jù)庫(kù)信息'queue-info ' + beanstalkdIp + ':11300', //設(shè)置隊(duì)列信息'report-server-db-info ' + pgIp + ':5432', //設(shè)置報(bào)表數(shù)據(jù)庫(kù)'sfmg-db-info ' + pgIp + ':5432', //設(shè)置軟件管家數(shù)據(jù)庫(kù)'web-server-port ' + webIp + ':8080',//設(shè)置管理服務(wù)器端口'commit',//提交'exit'}; //查看進(jìn)程是否還存活System.out.println('執(zhí)行前pro2:' + pro.isAlive());for (String strWeb : strCmdWeb) { synchronized (bw) {bw.write(strWeb.trim());bw.newLine();System.out.println('step: ' + strWeb);bw.wait(1000); }} //查看進(jìn)程是否還存活System.out.println('pro3:' + pro.isAlive());bw.flush();//緩存提交System.out.println('緩存提交!');bw.close();System.out.println(' bw.close();');System.out.println('web配置向?qū)гO(shè)置成功!'); } else if (role != null && role.equals('api-server')) {//系統(tǒng)app應(yīng)用//系統(tǒng)配置向?qū)罴?APPSystem.out.println('*********進(jìn)入APP服務(wù)器控制臺(tái)配置向?qū)?********');String[] strCmdApp = {'python /opt/tools/skylar_cli/bin/skylar_cli.pyc',//系統(tǒng)配置向?qū)?server-type', //服務(wù)器模式'api-server', //APP服務(wù)器'cache-info ' + redisIp + ':6379', //緩存服務(wù)器'db-info ' + pgIp + ':5432', //設(shè)置數(shù)據(jù)庫(kù)信息'queue-info ' + beanstalkdIp + ':11300', //設(shè)置隊(duì)列信息'web-server-info ' + webIp + ':8080', //設(shè)置管理服務(wù)器端口'commit',//提交配置'exit'}; for (String str : strCmdApp) { synchronized (bw) {bw.write(str.trim());bw.newLine();System.out.println('step: ' + str);bw.wait(1000); }}//查看進(jìn)程是否還存活System.out.println('pro3:' + pro.isAlive());bw.flush();//緩存提交System.out.println('緩存提交!');System.out.println('app配置向?qū)гO(shè)置成功!');bw.close(); } else if (role != null && role.equals('log-analyze-server')) {//系統(tǒng)日志分析服務(wù)器//系統(tǒng)配置向?qū)罴?log-analyze-serverSystem.out.println('*********進(jìn)入日志分析服務(wù)器控制臺(tái)配置向?qū)?********');String[] strCmdLog = {'python /opt/tools/skylar_cli/bin/skylar_cli.pyc',//天擎配置向?qū)?server-type', //服務(wù)器模式'log-analyze-server', //管理服務(wù)器:提供管理功能及應(yīng)用功能'cache-info ' + redisIp + ':6379', //緩存服務(wù)器'db-info ' + pgIp + ':5432', //設(shè)置數(shù)據(jù)庫(kù)信息'queue-info ' + beanstalkdIp + ':11300', //設(shè)置隊(duì)列信息'web-server-info ' + webIp + ':8080', //設(shè)置管理服務(wù)器端口'sfmg-db-info ' + pgIp + ':5432', //設(shè)置軟件管家數(shù)據(jù)庫(kù)'commit',//提交配置'exit' }; //順序執(zhí)行配置向?qū)頵or (String str : strCmdLog) { synchronized (bw) {bw.write(str.trim());bw.newLine();System.out.println('step: ' + str);bw.wait(1000); }}//測(cè)試進(jìn)程是否還存活System.out.println('pro3:' + pro.isAlive());bw.flush();//緩存提交System.out.println('緩存提交!');System.out.println('日志分析服務(wù)器配置向?qū)гO(shè)置成功!');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();//進(jìn)程等待 } public static void main(String[] args) throws Exception { TestMain testMain = new TestMain(); /*//測(cè)試用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 ,否則會(huì)報(bào)錯(cuò) 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包,執(zhí)行jar包:

java實(shí)現(xiàn)Linux(centos) 中docker容器下命令交互的代碼(配置向?qū)В? src=

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

java實(shí)現(xiàn)Linux(centos) 中docker容器下命令交互的代碼(配置向?qū)В? src=

到此這篇關(guān)于java實(shí)現(xiàn)Linux(centos) 中docker容器下命令交互(配置向?qū)В┑奈恼戮徒榻B到這了,更多相關(guān)docker容器命令交互內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Java
相關(guān)文章:

日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
亚洲人成网站在线在线观看| 国产一区二区精品| 亚洲毛片一区| 国产亚洲网站| 性欧美精品高清| 国产婷婷精品| 久久国产精品久久久久久电车| yellow在线观看网址| 精品一区二区三区中文字幕在线| 欧美激情网址| 精品黄色一级片| а√天堂8资源中文在线| 青青青免费在线视频| 亚洲精品永久免费视频| 蜜臀久久99精品久久久画质超高清| 中文字幕免费精品| 在线亚洲人成| 老色鬼精品视频在线观看播放| 久久精品国语| 欧美日韩激情| 香蕉久久久久久久av网站| 在线一区二区三区视频| 亚洲欧美日本国产专区一区| 先锋影音国产一区| 午夜亚洲福利| 国产极品嫩模在线观看91精品| 你懂的网址国产 欧美| 国产成人精选| 91精品国产自产在线观看永久∴| 99久久婷婷| 快she精品国产999| 奇米亚洲欧美| 黄色欧美在线| 欧美.日韩.国产.一区.二区| 美女网站久久| 久久国产生活片100| 精品欧美日韩精品| 三级小说欧洲区亚洲区| 亚洲激精日韩激精欧美精品| 日本不卡在线视频| 精品一区二区三区视频在线播放| 三级精品视频| 老牛影视一区二区三区 | 91精品在线免费视频| 精品九九在线| 9色精品在线| 国产亚洲人成a在线v网站| 国产suv精品一区二区四区视频| 日韩不卡免费高清视频| 三级一区在线视频先锋| 国产精品美女午夜爽爽| 国产黄大片在线观看| 另类av一区二区| 国产精东传媒成人av电影| 91精品推荐| 日韩欧美高清一区二区三区| 欧美aⅴ一区二区三区视频| 91精品国产乱码久久久久久久| 亚洲va久久久噜噜噜久久| 国产91在线播放精品| 亚洲免费成人| 麻豆精品99| 蜜乳av另类精品一区二区| 欧美a在线观看| 亚洲欧美日韩国产综合精品二区| 美女视频黄久久| 久久在线电影| 69精品国产久热在线观看| 久久九九精品| 国产乱子精品一区二区在线观看| 免费观看不卡av| 你懂的网址国产 欧美| 久久高清一区| 亚洲成人不卡| 久久99精品久久久野外观看| 夜夜嗨一区二区三区| 国内不卡的一区二区三区中文字幕| 麻豆亚洲精品| 99成人在线视频| 国产精品宾馆| 老鸭窝毛片一区二区三区| 成人一二三区| 日韩激情网站| 亚洲二区三区不卡| av最新在线| 国产精品久久久久久久久久妞妞| 婷婷亚洲综合| 成人在线视频免费| 国产精品一区免费在线| 丝袜美腿亚洲色图| 91精品一区国产高清在线gif| 青青草国产成人99久久| 五月婷婷六月综合| 日产午夜精品一线二线三线| 亚洲精品人人| 伊人影院久久| 日韩成人精品一区二区| 日韩av一级片| 蜜桃av一区| 欧美日韩国产高清| 日韩电影免费网站| 国产一区二区三区四区五区 | 国产毛片精品久久| 亚洲va久久| 久久国产高清| 亚洲欧美一区在线| 久久精品青草| 91看片一区| 欧美激情精品| 欧美精品中文| 日韩激情av在线| 视频一区二区不卡| 国产视频一区欧美| 99视频一区| 国产精品婷婷| 欧美另类专区| 欧美日韩日本国产亚洲在线| 三级精品视频| 日本不良网站在线观看| 久久99高清| 精品视频一区二区三区在线观看 | jiujiure精品视频播放| 日韩免费久久| 91亚洲自偷观看高清| 久久久久黄色| 麻豆国产一区| 九九久久国产| 精品国产一区二区三区2021| 久久久精品国产**网站| 久久久久97| 精品视频97| 精品视频在线观看网站| 六月丁香综合在线视频| 精品黄色一级片| 国产91在线播放精品| 手机在线电影一区| 日韩欧美一区免费| 91精品综合| 国产亚洲在线| 视频一区二区不卡| 日韩国产精品久久久久久亚洲| 日韩av资源网| 美腿丝袜在线亚洲一区| 国产成人精品一区二区免费看京 | 亚洲精品国产偷自在线观看| 国产精品99一区二区| 香蕉精品视频在线观看| 中文一区在线| 蜜桃av一区二区| 日本国产一区| 麻豆中文一区二区| 欧美香蕉视频| 欧美高清不卡| 一区二区三区网站| 欧美日韩调教| 精品国产乱码久久久久久1区2匹| 精品国产亚洲一区二区三区大结局 | 久久亚洲色图| 青青草视频一区| 久久精品国产在热久久| 欧美精选视频一区二区| 黄色日韩在线| 亚洲精品系列| 老司机免费视频一区二区| 91精品啪在线观看国产18 | 国产精品日本欧美一区二区三区| 亚洲伊人精品酒店| 国产欧美自拍| 欧产日产国产精品视频| 黑丝一区二区三区| 日韩精品久久久久久| 国产在线不卡一区二区三区| 极品日韩av| 91九色综合| 欧美天堂视频| 亚洲在线久久| 精品视频网站| 美女91精品| 久久久国产精品网站| 啪啪国产精品| 亚洲精品亚洲人成在线观看| 国产成人77亚洲精品www| 在线综合亚洲| 久久99青青| 99成人在线| 狂野欧美性猛交xxxx| 亚洲欧洲另类| 欧美国产精品| 一区在线免费观看| 欧美激情aⅴ一区二区三区| 激情综合在线| 日精品一区二区三区| 97精品国产| 亚洲三级网址| 精精国产xxxx视频在线野外| 在线综合亚洲| 国产成人在线中文字幕| 在线精品亚洲| 天堂日韩电影| 欧美日韩一区二区高清|