Bir kabuk betiğinden bir Docker kapsayıcısında bir django-tornado karma uygulaması başlatmak ve tanınmayan bir argüman olarak --noinput
almak için çalışıyorum tanınmayan bir argüman olarakmanage.py collectstatic: error: tanınmayan bağımsız değişkenler: - Docker tarafından başlatılan kabuk betiğindeki zaman kaybı
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
Neden almak olacaktır --noinput
: django komutlar için? Dockerfile, collectstatic
ve migrate
komutlarını (her ikisi için de başarısız olan --noinput
argümanı ile gerçekleştiren bir dağıtım kabuk komut dosyasını çağırır. Fazladan satırları kaldırma, komutun etrafındaki boşlukları ayarlama, vb. herhangi bir sorun olmadan yerel shell script çalıştırabilirsiniz; sadece kabuk komut dosyasına Docker konteyner RUN
çağrısında bir sorun gibi görünüyor
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
.
Dockerfile'da RUN python manage.py collectstatic --noinput
ile django komutlarını çalıştırırsam sorun yok, ancak uygulamaya özel komutları almaya çalıştığım için CMD
numaralı çağrıya başvurabilirim, çünkü veritabanı ortamımın dağıtımım için Elastik Beanstalk'den olması gerekiyor ortamı.
Çevrede herhangi bir yolu var mı? Bunu çözemiyorum. – Cognoscis
Düzenleyicinizin kabuk komut dosyaları için 'CR' karakterlerini girmediğinden emin olun. Eğer sürüm yazılımınız doğru bir şekilde yapılandırılmışsa, giriş/çıkış kontrolünün doğru satır sonlarına sahip olduğundan emin olmalısınız. '.gitattributes' dosya' * text = auto' ve '* .sh text eol = lf' ekledim. Eğer editörünüz hala sadece 'LF' yerine 'CRLF' ekliyorsa, bu benim için büyük sorunumdu. –
Cevabınız için teşekkür ederiz. Bunu bir dahaki sefere aklımda tutacağım – Cognoscis