基於python的交互式訪問
阿新 • • 發佈:2018-01-03
手指 容器 conf 同事 構建 lock 腳本 /usr 方法
應用遷移中遇到一些有特殊要求的應用,比如需要通過交互生成一些新的config文件,然後啟動應用需要依賴於這些文件,這樣在構建鏡像的時候基本上是沒有辦法把這些文件固定的,因為他需要根據運行環境去進行動態註冊生成,目前的解決方法如下:
1.寫一段支持交互的python腳本,生成配置
#!/usr/bin/python import subprocess import time import fcntl import os p = subprocess.Popen(["java","-jar","a.jar"],stdin=subprocess.PIPE,stdout=subprocess.PIPE) flags= fcntl.fcntl(p.stdout,fcntl.F_GETFL) fcntl.fcntl(p.stdout,fcntl.F_SETZFL,flags| os.O_NONBLOCK) time.sleep(2) print p.stdout.read() p.stdin.write("1\r\n")
開始調試時屏幕一直處於blocking狀態,後來同事高手指導下加入NONBLOCK後才通過。
2.將python腳本放入tomcat運行的catalina.sh,讓他在啟動容器後,啟動腳本一開始就運行
基於python的交互式訪問