2017-09-15 14 views
0

私はドッカーコンテナを利用するための最初の試みに着手しています。私はいくつかのAPIを呼び出し、ファイルを解析するpythonスクリプトを持っています。このスクリプトは、API用のサーバーのURL、APIキー、および解析するファイルのファイルパスのパラメータを取得しました。私はスクリプトでこれらを処理するためにargparseを使用しました。Dockerコンテナ内のPython argparseに引数を渡します。

これらをDockerに渡すにはどうすればよいですか?このスクリプトを定期的に実行し、結果に基づいてアクションを起こす必要のあるエンジニアにこのスクリプトを渡すことを望んでいるので、私は何もハードコードしたくありません。

ありがとうございました。私は検索してきましたが、dockerfileへのハードコーディングのようなものが示唆されています。ユーザーが実行時にこれらを入れることができるようにします。または、おそらく私は答えを見つけて、それを理解していないだけです....

私の言葉が正しくない場合はお詫び申し上げます - これはDockerを利用する私の最初の試みです。

+0

私は両方の反応から少しを取って、私はそれが必要なところに持っていました。あなたの助けをありがとうが、私は "答え"としてマークする人がわからない... –

答えて

2

あなたの使い方は、ドッカーの使い方によって異なります。すでに実行中のコンテナでスクリプトを実行したい場合は、execを使用することができます。

docker exec <yourContainerName> python <yourScript> <args> 

を別の方法として、あなたはあなたのスクリプトがENTRYPOINTあるドッキングウィンドウの画像、あなたがドッキングウィンドウrunコマンドに渡す引数を持っている場合だろうエントリーポイントに追加する。

お使いのドッキングウィンドウのファイルは次のようになりますのであれば、:

FROM yourbase 
.... 
ENTRYPOINT <yourScript> 

次に、あなただけのコンテナ自体を実行してスクリプトを実行することができます

docker run --rm <yourImageName> <args> 

下のあなたのコメントに基づいて、それがどのように見えますこのオプションが必要です。それでは、あなたのコマンドはそう

python app.py "URL" "APIKEY" "filepath" 

を下回っていると仮定しましょう

docker run --rm <yourImageName> -a API_KEY - f FILENAME -o ORG_ID 
+0

私のpythonスクリプトは、コンテナの理由です。 "CMD [" python "、" ./ script.py "]" Dockerfileにありますが、渡したい "-a API_KEY -f FILENAME -o ORG_ID" –

+0

あなたの望むものを反映するように自分の応答を編集しました – Chris

4

:あなたは(代わりにCMDを使用しての)

ENTRYPOINT ["python","./script.py"] 

を指定するために、次にあなたが経由で実行することができ、あなたのdockerfileを変更する必要がありますDockerファイルを下に置くことになります

FROM python:3.6 
WORKDIR /app 
COPY app.py . 
ENTRYPOINT ["python", "app.py"] 

は、次にドッキングウィンドウコンテナを実行している人はあなたにも環境変数

docker run -v /home/tarun/project/filetoparse.yaml:/config.yaml -e APIKEY="XYZ" <dockerimage> "URL" /config.yaml 

を使用することができ、より多くの柔軟性を与えたい場合は

docker run -v /home/tarun/project/filetoparse.yaml:/config.yaml <yourimagename> "URL" "APIKEY" /config.yaml 

下のようにそれを行うだろう。そして、あなたのスクリプトでは次のことができますそれを読んでくださいos.environ['APIKEY']

関連する問題