2016-07-27 5 views
0

play 웹 응용 프로그램을 실행하는 도커 이미지가 있습니다. dockerfile에는 서버를 시작하는 CMD가 있으며 Ctrl + D를 눌러 종료 할 때까지 대기합니다. 내가 할 경우시작시 Docker가 CMD를 종료합니다.

docker run -d -i -v 

이 제대로 작동 - 서버를 시작하고 Ctrl + D 키를 기다립니다.

docker start -i 

대신 서버가 자동으로 중지 :

--- (Running the application, auto-reloading is enabled) --- 

[info] p.c.s.NettyServer - Listening for HTTP on /0:0:0:0:0:0:0:0:9000 

(Server started, use Ctrl+D to stop and go back to the console...) 


[success] Total time: 1 s, completed Jul 27, 2016 11:54:13 AM <--- this indicates that the server was stopped. 

어떻게 서버를 중지하지 않도록 고정 표시기의 시작을 강제 할 수 내가 용기를 시작할 때

는 그러나 이것은 사실이 아니다?

답변

1

도커 컨테이너의 주 프로세스가 완료되면이 종료됩니다. 도커 파일에 대한 통찰력이 없어도 (나는 플레이 프레임 워크에 대한 경험이 없다) 적어도 하나의 프로세스가 살아 있는지 확인해야한다.

  • 도커 방법
    당신이 시작 컨테이너에 들어가 docker run -it <your framework image> bash 같은 -it를 사용해보십시오 :

    당신은 몇 가지 옵션이 있습니다. 이렇게하면 창을 열어 놓고 컨테이너에서 명령을 실행할 수 있습니다.

  • 도커 "디버그"방법
    컨테이너가 종료 이유를 조사하기 위해 docker inspect <your container> (컨테이너를 찾을 docker ps -a를 사용) 명령을 사용하십시오. start.sh와 같은 시작 스크립트가있는 경우에는 컨테이너를 종료 한 후에 조사하기 위해 컨테이너를 계속 유지하기 위해 while true; do sleep 1000;을 추가 할 수 있습니다.
  • 같은 게시 된 고정 표시기 이미지의 하나를 사용하십시오 - https://hub.docker.com/r/ingensi/play-framework/

P.S.을 당신이 도커에게 새로운 느낌이고 느슨한 느낌을 풀어서 docker startdocker run 명령을 섞어 버릴 수는 없습니다.

관련 문제