CMD
명령어의 일부로 여러 명령을 실행해야하는 Dockerfile을 작성 중이므로 exec
을 통해 실행되는 주 데몬으로 쉘 스크립트를 실행하는 것이 올바른 방법이라고 생각했습니다. 불행히도, 그 과정의 일부로 내 출력 (stdout? stderr? 나도 몰라, 알아내는 법을 모르겠다)이 손실된다.docker/fig로 Django 개발 서버를 실행할 때 일부 로그 출력이 숨겨져있는 이유는 무엇입니까?
다음은 쉘 스크립트입니다 :
#!/bin/sh
python manage.py migrate
exec python manage.py runserver 0.0.0.0:8000
migrate
명령을 한 번만 실행되고 출력이 표시 한 다음 runserver
명령을 인수해야하며 용기는 그 프로세스가 종료 될 때까지 실행되는 것으로 생각.
실제 문제는 migrate
의 출력이 올바르게 표시되지만 즉시 출력은 runserver
이 표시되지 않습니다. 이상하게도 나중에 로깅 요청이 runserver
으로 잘 표시됩니다.
명확히하기 위해, 여기에 내가 예상 출력입니다 :
[...]
No migrations to apply.
[...]
Starting development server at http://0.0.0.0:8000/
Quit the server with CONTROL-C.
[21/Jan/2015 16:27:06] "GET/HTTP/1.1" 200 15829
가 여기에 내가 fig up
으로지고있어 무엇 :
[...]
No migrations to apply.
[...]
[21/Jan/2015 16:27:06] "GET/HTTP/1.1" 200 15829
나는 이것이 잘못 누가 모르겠어요. runserver
명령은 실행 방법에 따라 출력이 변경됩니까? exec
에 문제가 있습니까? 그것은 도커/무화과인가?
추가 데이터 포인트로, fig run web
을 사용하여 컨테이너를 실행할 때 모든 출력을 얻었지만 fig up
을 수행 할 때가 아니라는 것을 알았지 만 그것이 다른지 또는 관련성이 있는지 이해하지 못합니다.
참고 : 태그 스팸에 대해 죄송합니다. 실제로이 효과를 일으키는 원인을 알았다면 태그를 줄입니다.
출력을 수동으로 리디렉션하고 나중에 ">>"리디렉션을 사용할 수 있습니다. – Paul
@Paul 당신은 무엇을 의미합니까? '''추가 리다이렉션을 사용하지 않고있다. –
각 실행 서버 전에 마이그레이션을 실행해야하는 이유는 무엇입니까? 'django-admin.py'를 진입 점으로 만들고'fig run migrate'와 같이 마이그레이션을 수행 할 수 있습니다. –