Piszę plik Docker, który musi uruchomić wiele poleceń jako część instrukcji CMD
i myślałem, że właściwym sposobem jest uruchomienie skryptu powłoki z głównym demonem wykonanym przez exec
. Niestety, w ramach tego procesu niektóre moje wyniki (stdout? Stderr? Nie wiem i nie wiem, jak się dowiedzieć) zostają utracone.Podczas uruchamiania serwera Django z funkcją dokowania/rysowania, dlaczego niektóre dane wyjściowe protokołu są ukryte?
Oto skrypt powłoki:
#!/bin/sh
python manage.py migrate
exec python manage.py runserver 0.0.0.0:8000
Pomysł jest, że komenda migrate
jest po prostu uruchomić raz pokazano jego wyjście, a następnie komenda runserver
powinien przejąć i pojemnik biegnie aż wydostająca procesowych.
Problem polega na tym, że wyjście migrate
jest wyświetlane poprawnie, ale natychmiastowe wyjście runserver
nie jest wyświetlane. O dziwo, później żądanie rejestrowania runserver
jest pokazane dobrze.
Aby wyjaśnić, oto wyjście Spodziewałem:
[...]
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
Oto co mi chodzi z fig up
:
[...]
No migrations to apply.
[...]
[21/Jan/2015 16:27:06] "GET/HTTP/1.1" 200 15829
Nie jestem nawet pewien, kto jest wina tego jest. Czy polecenie runserver
zmienia swój wynik w zależności od sposobu jego uruchomienia? Czy to jest problem z exec
? Czy to doker/fig?
Jako dodatkowy punkt danych, zauważyłem, że otrzymuję wszystkie dane wyjściowe podczas uruchamiania kontenera z fig run web
, ale nie wtedy, gdy robię fig up
, ale nie rozumiem, jak to jest inne lub istotne.
Uwaga: przykro mi z powodu spamu ze znacznikami, zmniejszę liczbę tagów, gdy tylko dowiem się, co właściwie powoduje ten efekt.
Możesz ręcznie przekierować dane wyjściowe, i użyj późniejszych przekierowań ">>". – Paul
@Paul Co masz na myśli? Nie używam żadnych przekierowań ">>". –
Dlaczego przeprowadzanie migracji przed każdym uruchomionym serwerem? Możesz stworzyć 'django-admin.py' punkt początkowy i uruchomić migrację, jak" rysuj run migrate ". –