2016-10-24 7 views
0

pipをインストールした依存関係が必要なPythonアプリケーションの開発環境を維持したいと考えています。Dockerとpipの要件

gitリポジトリからドッカーボリュームとしてマウントされたホストフォルダにソースコード(requirements.txtを含む)をプルする予定です。

ライブラリーの更新を維持しながら、すべてgit pullの高価なpip install -r requirements.txtを避けるためのドッカーパターンはありますか?

+0

どのような解決策をお探しですか? 「推奨事項」や「ベストプラクティス」を求める質問は、「広すぎる」としばしば閉じられます。 –

+0

@BurhanKhalid私の質問を編集しました。今はそれほど広いとは思わない。 – max

+1

ほとんどの場合、DockerコンテナにPythonの依存関係をインストールし、それを画像として保管しなければなりません。あなたのレポを引くたびに、最新の(または関連するもの)Dockerイメージを引き出し、同じイメージで構築されたコンテナにマウントします。依存関係が更新されたときに手動でコンテナを更新し続ける必要があります。あなたはビルドのプロセスでそれを保持することで、プッシュするたびにイメージを構築することで利益を得るかもしれません。 – activatedgeek

答えて

0

毎回のインストールを避ける方法は、別のRUN命令でpip installを実行してから、レポ全体をプルすることです。 requirements.txtの内容が、その後変更されていない場合、

ADD https://raw.githubusercontent.com/etc/requirements.txt . 
RUN pip install -r requirements.txt 

あなたはdocker buildこの:完全なリモートURLを指定して、多分ADDで - あなたはrequirements.txt容器にを取得するための別の方法が必要となりますことを行うために、すべてのインストールされた依存関係を持つキャッシュされたレイヤーが使用されます。要件ファイルが変更された場合、インストールは再度実行されます。

これに従うと、要件ファイルに特定のバージョンが必要になり、バージョンバンプを手動で更新する必要があります。

+0

しかし、このアプローチでは、 'git pull'を実行するたびに私のローカルマシンで画像を' docker build 'してから' pip install'する必要があります。作業を続ける前に10〜15分待ちます?もちろん、 'requirements.txt'が変更されなかった場合、イメージは変更されずに残ってディスクスペースを節約します。私は 'git pull'の後に待ち時間を避けることも望んでいました。 – max

関連する問題