私はDockerコンテナを正常に構築し、アプリケーションのファイルをDockerfileのコンテナにコピーしました。しかし、入力ファイル(Dockerビルド中にコンテナにコピーされた)を参照するPythonスクリプトを実行しようとしています。なぜ私のスクリプトは入力ファイルを見つけることができないと言っているのか分かりません。私は以下のコンテナを構築するために私が使用したDockerfileと、見つからない入力ファイルを探しているPythonスクリプトの関連部分を含めています。Docker Pythonスクリプトがファイルを見つけることができません
Dockerfile:
FROM alpine:latest
RUN mkdir myapplication
COPY . /myapplication
RUN apk add --update \
python \
py2-pip && \
adduser -D aws
WORKDIR /home/aws
RUN mkdir aws && \
pip install --upgrade pip && \
pip install awscli && \
pip install -q --upgrade pip && \
pip install -q --upgrade setuptools && \
pip install -q -r /myapplication/requirements.txt
CMD ["python", "/myapplication/script.py", "/myapplication/inputfile.txt"]
Pythonスクリプトの関連部分:エラーが発生したホスト上の
if len(sys.argv) >= 2:
sys.exit('ERROR: Received 2 or more arguments. Expected 1: Input file name')
elif len(sys.argv) == 2:
try:
with open(sys.argv[1]) as f:
topics = f.readlines()
except Exception:
sys.exit('ERROR: Expected input file %s not found' % sys.argv[1])
else:
try:
with open('inputfile.txt') as f:
topics = f.readlines()
except:
sys.exit('ERROR: Default inputfile.txt not found. No alternate input file was provided')
ドッカーコマンド:
:上記コマンドからsudo docker run -it -v $HOME/.aws:/home/aws/.aws discursive python \
/discursive/index_twitter_stream.py
エラー
ERROR: Default inputfile.txt not found. No alternate input file was provided
AWSの内容は、ホストのAWS資格情報をDockerコンテナに渡してAWSサービスとのやり取りに使用する方法に関するチュートリアルから引き出されています。私はここから要素を使用しました:https://github.com/jdrago999/aws-cli-on-CoreOS
は、/ binに/ bash' 'のエントリ・ポイントをオーバーライドしてみてください。
で容器の内側にある。予想されるすべてのファイルが存在し、予想されるディレクトリなどに存在することを確認してください。 – Tagc
ディレクトリを細かく表示でき、適切な場所にintputfile.txtがあります。 'sudo docker run -it -v $ HOME/.aws:/home/aws/.aws containername ls/myapplication' – LouiseEMastiz
この' CMD'では 'else'に到達することさえ奇妙です。 'sys.argv'の長さは2であるため、' elif'を入力してファイルを開くか、 'else'のコードではなく、そのブランチのコードに基づいて終了してください。 –