2017-01-02 19 views
0

現在、私のpythonプロジェクトでは、いくつかのapt-get、pipインストール、いくつかのdirを作成していくつかのファイルをコピーするdeploy.shファイルがあります。私の私用のrepoはdeploy.shを実行します。ドッキング・ベースのノン・ドッキング・ベースのデプロイメントのサポート

私はドッカーと遊んでいます。基本的な質問は、dockerfileがgitクローンを実行してからdeploy.shを実行するか、dockerfileがそれぞれのapt-get、pipなどに対して独自のRUNを持つべきかどうかです。 deploy.sh ...作業の重複(入力)のように思われ、同期が外れる可能性がありますか?

答えて

1

その作業はドッカーファイルに複製する必要があります。この理由は、ドッカーのレイヤーとキャッシングシステムを利用するためです。この例を見てみましょう:

# this will only execute the first time you build the image, all future builds will use a cached layer 
RUN apt-get update && apt-get install somepackage -y 
# this will only run pip if your requirements file changes 
ADD requirements.txt /app/requirements.txt 
RUN pip install -r requirements.txt 
ADD . /app/ 

また、あなたがドッキングウィンドウのビルドにあなたのコードのgit checkoutを行うべきではありません。上記の例のようにローカルチェックアウトのファイルを画像に追加するだけです。

+0

返信ありがとうございます。私がpipインストール-eを実行している場合、例のpip部分はまだ成立しますか?またはpython setup.py install – Metalstorm

+0

@Metalstorm 'pip'行が実行されているかどうかは、前の' ADD'行のファイルがキャッシュ内のものと異なるかどうかによって決まります。要件ファイルの中に '-e'を置くことができます。 – jordanm

+0

これは問題ですが、私はrequirement.txtファイルを持っていません。すべての要件はsetup.pyに依存しています。しかし、私がsetup.pyを追加していて、それが異なっているとピップが正しく動くはずですか? – Metalstorm

関連する問題