2017-02-07 11 views
0

コマンドラインからファイルを読み込むドッキングされたPythonアプリケーションを作成する必要があります。それが可能だ場合、私は知らないが、このアプリを実行するための私の仕様があるDocker Pythonアプリケーションのコマンドライン引数としてのファイル

FROM python:3 
ADD test.py/
ENTRYPOINT ["python", "test.py"] 
CMD ["test.py"] 

どこtest.py:現時点では私のドッカファイルを

docker run -t myimage file.csv 

は、次のようになりです: 輸入SYS

def main(args): 
    for a in args: 
     print(a) 
     with open(a, 'r') as f: 
      for l in f: 
       print(l) 


if __name__ == '__main__': 
    main(sys.argv) 

答えて

1

は、ドッキングウィンドウコンテナを使用しない限り、ファイルは表示されませんそれをボリュームとしてコンテナにマップします。

python test.py file.csv 

ます。また、使用することができます。/file.csvなどの容器に./file.csvをマッピングし、その後、コンテナ内のスクリプトが実行されます

docker run -t -v `pwd`/file.csv:/file.csv myimage file.csv 

:この構文は次のようになります。コネクターへの入力をパイプでつなぎ、stdinを取り替えるドッカーcli。 CLIから、あなたはそれがインタラクティブにするために-iを含める必要があり、その後、同様に通常のシェルのリダイレクトを使用する:あなたがこれを行う場合は

docker run -it myimage <file.csv 

、あなたは、標準入力の代わりに読み取るために、あなたのPythonスクリプトを更新する必要があるだろうファイルを作成し、他のものに対してstdinを使用していた場合、pythonスクリプトと対話するオプションはありません。

+0

私の仕様が間違っていて、決して会うことができないのですか? –

+1

上記の2つの方法で対応できます。しかし、書かれているように、あなたはfile.csvをコンテナの中に入れていないので動作しません。 – BMitch

関連する問題