[解決済み] Docker 変更があった場合のみ pip requirements.txt を実行するには?
2022-08-03 02:04:30
質問
Dockerfileの中で、以下のようなレイヤーをインストールしています。
requirements.txt
:
FROM python:2.7
RUN pip install -r requirements.txt
docker イメージをビルドすると、全てのプロセスが実行されます。 に関わらず このファイルに加えられた変更の有無にかかわらず。
Dockerはどのようにすれば
pip install -r requirements.txt
を実行するようにするにはどうしたらいいですか?
Removing intermediate container f98c845d0f05
Step 3 : RUN pip install -r requirements.txt
---> Running in 8ceb63abaef6
Collecting https://github.com/tomchristie/django-rest-framework/archive/master.zip (from -r requirements.txt (line 30))
Downloading https://github.com/tomchristie/django-rest-framework/archive/master.zip
Collecting Django==1.8.7 (from -r requirements.txt (line 1))
どのように解決するのですか?
ビルドプロセスのある時点で、アプリケーション全体をDockerイメージにコピーすることを想定し
COPY
または
ADD
:
COPY . /opt/app
WORKDIR /opt/app
RUN pip install -r requirements.txt
問題は、アプリケーション全体をイメージにコピーするたびに、Dockerのビルドキャッシュを無効にしていることです。これはまた、それ以降のすべてのビルド手順でキャッシュを無効にしてしまいます。
これを防ぐために、コピーした
のみをコピーすることをお勧めします。
requirements.txt
ファイルのみを、アプリケーション全体をイメージに追加する前に、別のビルドステップで実行します。
COPY requirements.txt /opt/app/requirements.txt
WORKDIR /opt/app
RUN pip install -r requirements.txt
COPY . /opt/app
# continue as before...
要件ファイル自体が変更されることはほとんどないでしょうから、アプリケーションコードを画像に追加する時点まで、キャッシュされたレイヤーを使用することができるようになります。
関連
-
[解決済み] Windowsにpipをインストールするにはどうしたらいいですか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] AndroidでPythonを実行する方法はありますか?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] ローカルディレクトリからrequirements.txtファイルに従ってpipを使用してパッケージをインストールするにはどうすればよいですか?
-
[解決済み] 古いDockerコンテナを削除する方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pythonのキャッシュライブラリはありますか?
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] 異なる順序で同じ要素を持つ2つのJSONオブジェクトを等しく比較するには?
-
[解決済み] Python Logging でログメッセージが2回表示される件
-
[解決済み] Pythonによる一対のクロスプロダクト [重複] (英語)
-
[解決済み] Python Empty Generator 関数
-
[解決済み] Pythonの検索パスを他のソースに展開する
-
[解決済み] Pythonでファイルの読み込みと上書きをする
-
[解決済み] Pythonの辞書にあるスレッドセーフについて