2017-10-20 17 views
0

여러 개의 Python 스크립트를 순서대로 실행하는 응용 프로그램이 있습니다. 내가 그들을 실행할 수 있습니다 다음과 같이 고정 표시기 - 구성 :Nomad에서 다중 bash 명령

지금
command: > 
    bash -c "python -m module_a && 
    python -m module_b && 
    python -m module_c" 

나는 유목민의 작업을 예약하고, 도커 드라이버 구성에서 아래 명령을 추가 해요 :

command = "/bin/bash" 
args = ["-c", "python -m module_a", "&&"," 
     "python -m module_b", "&&", 
     "python -m module_c"] 

그러나이 유목민 보인다 &&을 이스케이프 처리하고 첫 번째 모듈을 실행하고 종료 코드 0을 실행합니다. docker-compose와 비슷한 multiline 명령을 실행할 수있는 방법이 있습니까?

+0

은'&&'하지 코드로, 쉘에 대한 추가 인수로 전달하여 실행합니다. –

답변

1

는 다음이 exec 드라이버와 함께 작동하도록 보장 : 단 하나의 인수이 스크립트로 전달되는

command = "/bin/bash" 
args = [ 
    "-c",             ## next argument is a shell script 
    "for module; do python -m \"$module\" || exit; done", ## this is that script. 
    "_",             ## passed as $0 to the script 
    "module_a", "module_b", "module_c"      ## passed as $1, $2, and $3 
] 

하는 것으로 - 즉시 -c을 다음 하나. 후속 인수는 해당 스크립트에 대한 인수이며 추가 스크립트 또는 스크립트 조각은 아닙니다.


에도 간단하게, 당신은 실행할 수 있습니다 :

command = "/bin/bash" 
args = ["-c", "python -m module_a && python -m module_b && python -m module_c" ] 
+0

안녕하세요, 고맙습니다. 실제로이 방법을 시도했지만 종료 코드 2에서 두 가지 결과가 나타납니다. '종료 코드 : 2, 종료 메시지 :'0이 아닌 종료 코드로 종료 된 Docker 컨테이너 : " – seemvision

+0

'-c'보다는'-xc' (따라서 명령을 stderr로 로깅하는 것)이 계몽 적이겠습니까? –

+0

(로그가 없으면 "종료 코드 : 2"는 이전 환경과이 환경 또는 설치 환경의 차이로 인해 Python 모듈 중 하나가 성공적으로 시작된 후 해당 상태로 종료되었음을 의미 할 수 있음) –