Sto lavorando per avviare un'app ibrida django-tornado in un contenitore Docker da uno script di shell e ottenere --noinput
come argomento non riconosciuto per i comandi di Django:manage.py collectstatic: errore: argomenti non riconosciuti: --noinput nello script di shell lanciato da 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
Perché dovrei essere sempre --noinput
come argomento non riconosciuta? Il mio Dockerfile chiama uno script di shell di distribuzione che esegue i comandi collectstatic
e migrate
(entrambi con l'argomento --noinput
, che non funziona per entrambi. Ho giocato con la rimozione di linee estranee, la regolazione degli spazi bianchi attorno al comando, ecc. in grado di eseguire lo script di shell a livello locale senza problemi, ma sembra essere un problema solo nella finestra mobile contenitore RUN
chiamata allo script di shell
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
.
Se eseguo i comandi django nel Dockerfile con RUN python manage.py collectstatic --noinput
non c'è alcun problema, ma sto cercando di ottenere i comandi specifici dell'applicazione nella chiamata CMD
, poiché ho bisogno di avere le vars di ambiente del database da Elastic Beanstalk per la mia distribuzione ambiente.
C'è un modo per aggirarlo? Non sono in grado di capirlo. – Cognoscis
Assicurati che il tuo editor non inserisca caratteri 'CR' per gli script di shell. Se il tuo software di versioning è configurato correttamente, dovrebbe assicurarsi che il check in/out abbia le terminazioni di linea corrette. Ho aggiunto al mio file '.gitattributes' * * text = auto' e' * .sh text eol = lf'. Questo, da solo, non risolve le cose se il tuo editor aggiunge ancora 'CRLF' invece di solo' LF', però, che era il mio grosso problema. –
Grazie per la risposta. Lo terrò a mente la prossima volta – Cognoscis