2017-09-14 14 views
0

ファイルパスとして最初の引数が必要なPythonアプリケーションがあります。基本的に設定ファイルです。DockerのPythonアプリケーションに引数(ファイルパス)を渡す方法

を:

このファイルには、これを渡すためにどのようにドッカー

をマウント/フォームのボリュームを取得する必要があります。スニペット Pytohn:

with open(sys.argv[1], 'r') as ymlfile: 
    cfg = yaml.load(ymlfile) 

ドッカー私は家/例/で利用可能config.ymlファイルを期待してい

COPY install.py /wiki/install.py 
CMD [ "python", "/wiki/install.py", "/config/config.yml"] 

ランimageコマンド

sudo docker run -v /config:/home/example/config/ app-wiki 

ファイル/設定/にコピーされます/ config dirとDockerファイル内には があります。

しかし、この方法では動作しません。

どこが間違っていますか?

+0

私はあなたの回答からヒントを得ました。 私は、config.pyの引数としてconfigファイルを期待しています。ボリュームから私が欲しいこのパス。そこでwikiconfigという名前でボリュームを作成しました。 が 今 CMDを使用して、[ "パイソン"、「/エージェント/インストール/ホーム/例/ configに/アプリ-ウィキ: 、その後は-v/wikiconfig sudoのドッキングウィンドウを実行するには、このボリュームを割り当てるwikiconfig ドッカボリュームが作成されます。 py "、" /wikiconfig/config.yml "] これもできません。 – Paperless

答えて

0

ドッカーの道具CMDが正しく動作するようにするには、ファイルが適切な権限で正しい場所にコピーされていることを確認する必要があります。

例:

RUN mkdir -p /config 
RUN mkdir -p /wiki 
ADD cp <your-location> /config/config.yml 
ADD install.py /wiki/install.py 
CMD [ "python", "/wiki/install.py", "/config/config.yml"] 

また、ドッキングウィンドウは、あなたのローカルディレクトリに持って同じ権限を維持します。したがって、両方のファイルに正しい権限が設定されていることを確認してください。

+0

私は、config.pyの引数としてconfigファイルが必要です。ボリュームから私が欲しいこのパス。 – Paperless

0

問題は、方向が間違っていることです。フォーマットは/configフォルダで容器で利用できるようになります/home/example/config/にコンフィグ存在を行う

sudo docker run -v /home/example/config/:/config app-wiki 

でなければなりません

sudo docker run -v /config:/home/example/config/ app-wiki 

以下<hostpath>:<containerpath>

ある

編集-1

疑問を解消するための説明が追加されました。

COPY install.py /wiki/install.py 
CMD [ "python", "/wiki/install.py", "/config/config.yml"] 

あなたはそれが設定は/config/config.ymlで利用できることを期待しています上記のイメージを実行します。あなたがconfig.ymlファイルを持っているあなたのホスト/home/tarun/wikiconfig上のフォルダを持っている場合

はさて、あなたはconfig.ymlファイルの名前は、あなたのwikiconfigフォルダに異なっている場合は、あなたがマウントされます

sudo docker run -v /home/tarun/wikiconfig:/config app-wiki 

を使用してコンテナを実行しますconfig.yml

sudo docker run -v /home/tarun/wikiconfig/myconfig.yml:/config/config.yml app-wiki 

どちらもあなたのホストからフォルダやファイルをマウントするときので、あなたは、Dockerfileを構築する際に、追加した設定を上書きするだろう、anythへのファイルコンテナ内の同じパスを使って画像にアクセスすることはできません。

+0

私はあなたの応答からヒントを得ました。 私は、config.pyの引数としてconfigファイルを期待しています。ボリュームから私が欲しいこのパス。そこでwikiconfigという名前でボリュームを作成しました。 が 今 CMDを使用して、[ "パイソン"、「/エージェント/インストール/ホーム/例/ configに/アプリ-ウィキ: 、その後は-v/wikiconfig sudoのドッキングウィンドウを実行するには、このボリュームを割り当てるwikiconfig ドッカボリュームが作成されます。 py "、" /wikiconfig/config.yml "] これもうまくいきません – Paperless

+0

あなたのボリューム順序が間違っています。 '/ home/example/config /'は '/ home/example/config /:/ wikiconfig'になります。 –

+0

この設定ファイルにアクセスするにはDockerファイルで何を使うべきですか? – Paperless

関連する問題