2016-07-17 3 views
5

シェルスクリプトからDockerコンテナにdjango-tornadoハイブリッドアプリを起動し、認識できない引数として--noinputを取得しようとしていますジャンゴするためのコマンド:manage.py collectstatic:error:認識できない引数:シェルスクリプトの--noinputが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 

は、なぜ私は認識できない引数として--noinputを得ることでしょうか?私Dockerfileは、両方の両方のために失敗している--noinput引数、と。私は無駄になど、不要な行を削除コマンドの周りに空白を調整して周りにプレイしました(collectstaticmigrateのコマンドを実行し、展開シェルスクリプトを呼び出します。I 。何の問題もなく、ローカルにシェルスクリプトを実行することができ、唯一のシェルスクリプトにドッカーコンテナRUNコールに問題があるように思わ

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 

RUN python manage.py collectstatic --noinputでDockerコマンドを実行すると問題はありませんが、CMDコールでアプリケーション固有のコマンドを取得しようとしています。私の展開用にElastic Beanstalkのデータベース環境変数が必要です。環境。

答えて

5

私の問題は、シェルスクリプトの行末であるように見えます。私はSHのpythonに--noinput\Rに供給したので、それは--noinputのように見えるように、端末自体を提示しましたが、本当にそれは同様にそれが反対に一致していることCR文字を得ていたと思います。

私がローカルでテストしていたときは、Dockerクイックスタートターミナル(作業していた場所)にあり、Dockerコンテナは常にUbuntuで動作していました。

Windowsで書かれたシェルスクリプトのさまざまな行末がLinux環境で混乱していた前に、私はこのようにヒットしました。そして、行末を正しく設定することがどれほど重要かを覚えておく必要があります私の編集者...

+0

何もありませんか?私はそれを理解することができません。 – Cognoscis

+0

エディタがシェルスクリプトに 'CR'文字を挿入していないことを確認してください。バージョニングソフトウェアが正しく設定されている場合は、in/outのチェックに正しい行末があることを確認する必要があります。 '.gitattributes'ファイル' * text = auto'と '* .sh text eol = lf'に追加しました。しかし、エディタがまだ 'LF'の代わりに' CRLF'を追加しているのであれば、それは自分自身では修正されませんが、それは私の大きな問題でした。 –

+0

返信いただきありがとうございます。次回はこれを覚えておきます – Cognoscis

関連する問題