Pracuję nad uruchomieniem hybrydowej aplikacji django-tornado w kontenerze Docker ze skryptu powłoki i otrzymaniem --noinput
jako nierozpoznanego argumentu poleceń django:manage.py collectstatic: błąd: nierozpoznane argumenty: --noinput w skrypcie powłoki uruchomionym przez Docker
usage: manage.py collectstatic [-h] [--version] [-v {0,1,2,3}]
[--settings SETTINGS] [--pythonpath PYTHONPATH]
[--traceback] [--no-color] [--noinput]
[--no-post-process] [-i PATTERN] [-n] [-c] [-l]
[--no-default-ignore]
manage.py collectstatic: error: unrecognized arguments: --noinput
Dlaczego miałbym być coraz --noinput
jako nierozpoznane argumentu? Mój plik Dockerfile wywołuje skrypt powłoki wdrażania, który wykonuje komendy collectstatic
i migrate
(oba z argumentem --noinput
, który jest nieskuteczny dla obu.) Odtwarzałem z usuwaniem zewnętrznych linii, dostosowywaniem białych znaków dookoła polecenia, itd., Bezskutecznie. można uruchomić skrypt lokalnie bez żadnych problemów, wydaje się być tylko problem w Docker pojemnik RUN
wywołania skryptu powłoki
Dockerfile:
FROM python:2.7
RUN apt-get update
RUN apt-get install -y build-essential
RUN apt-get install -y python-dev
RUN apt-get install -y libmysqlclient-dev
RUN mkdir /code
ADD . /code/
WORKDIR /code
RUN pip install -r requirements.txt
CMD ["sh","./deploy.sh"]
EXPOSE 8888
deploy.sh:
#!/bin/sh
python manage.py collectstatic --noinput
python manage.py migrate --noinput
python main.py
.
Jeśli uruchamiam komendy django w pliku Dockerfilmu z RUN python manage.py collectstatic --noinput
, to nie ma problemu, ale próbuję uzyskać komendę specyficzną dla aplikacji w wywołaniu CMD
, ponieważ potrzebuję mieć warianty środowiska bazy danych z Elastic Beanstalk dla mojego wdrożenia środowisko.
Czy jest jakiś sposób obejścia tego? Nie jestem w stanie tego rozgryźć. – Cognoscis
Upewnij się, że twój edytor nie wstawia znaków 'CR' dla skryptów powłoki. Jeśli twoje oprogramowanie do obsługi wersji jest poprawnie skonfigurowane, upewnij się, że sprawdzanie rzeczy do wejścia/wyjścia ma właściwe zakończenia linii. Dodałem do mojego pliku '.gitattributes'' text = auto' i '* .sh text eol = lf'. To samo w sobie nie naprawia rzeczy, jeśli twój edytor wciąż dodaje 'CRLF' zamiast tylko' LF', co było moim dużym problemem. –
Dziękuję za odpowiedź. Będę o tym pamiętać następnym razem – Cognoscis