2017-09-07 7 views
1

私はC++アプリケーションを実行するためのドッカーファイルを持っています。ドッカーファイルの一部には、次のコマンドがあります。Dockerビルド中にC++パッケージをインストールする

RUN tar -xvf boost_1_56_0.tar.bz2 && \ 
cd boost_1_56_0 && \ 
./bootstrap.sh && \ 
./b2 install 

tarファイルはドッカーイメージの一部です。 問題は、私がdockerfileをビルドするたびに、パッケージ全体がインストールされ、ひどい時間がかかることです。どうすればそれを防ぐことができますか?

+1

パッケージからのブーストをインストールできるベースイメージを使用できませんか? – whites11

+0

@whites11ベースイメージはcentos:7です。yumリポジトリのバージョンの問題がありますか? –

+1

私は分かりませんが、あなたは昇圧1.56を提供するパッケージシステムを持っているベースイメージを見つけることができます。 – whites11

答えて

1

ドッカーファイルにコマンドを含めて何も変更されていない場合、Dockerは以前のビルドのキャッシュデータを使用します。だからこのようなものがあれば:

ADD ./myfiles /path/in/container # changes each time 
RUN tar -xvf boost # etc 

その後、毎回ブーストが再構築されます。このようなあなたのDockerfileを再編成する場合でも:

RUN tar -xvf boost # etc 
ADD ./myfiles /path/in/container # changes each time 

その後、あなたの最後のドッキングウィンドウのビルドからブーストのバイナリビルドはキャッシュから再利用されます。より一般的には、Dockerファイルの中にあるものを早く入れておくと、変更する可能性が低くなります。

+0

私は持っているコマンドに関して、何が修正になるべきですか? –

+0

@MukulChakravarty変更するものを正確に言うためには、あなたのDockerfileをかなりポストする必要があります。しかし、私の答えのアイデアを理解すれば、あなたは自分で変更を加えることができます。 –

+0

おかげさまで、ドッカーのビルド中にファイルを抽出するのではなく、基本的にあなたのアイデアを実験しました。 –

関連する問題