2016-10-11 7 views
2

私はMavenプロジェクトを持っています。 Docker内でMavenビルドを実行しています。しかし、問題はそれを実行するたびにすべてのMaven依存関係をダウンロードし、それらのMavenダウンロードをキャッシュしないことです。composeを使用してドッカーのボリュームにドッカーボリュームをマウントする方法は?

ローカルの.m2フォルダをDockerコンテナにマウントするための回避策がいくつか見つかりました。しかし、ビルドはローカルセットアップに依存します。私がしたいのは、ボリューム(ロングライブ)を作成し、そのボリュームをDocker内の.m2フォルダにリンク/マウントすることです。そうすれば、2回目のDockerビルドを実行すると、すべてをダウンロードすることはできません。そしてそれは環境に依存しません。

ドッカーの作成でこれを行うにはどうすればよいですか?

+1

あなたはあなたの 'docker build'の一環として' mvn compile'を実行してから、イメージをいくつかのレジストリにプッシュすることができます。イメージをプルするときは '.m2'フォルダがキャッシュされ、より速い – bjhaid

+0

txが、しかし私は別のイメージを管理する必要があります。そして、物事は変わります、 – dinesh707

+1

'.m2'フォルダは環境の中を移動するためにどこかに生きていなければならず、私の提案はそれを画像に反映させています – bjhaid

答えて

3

あなたの正確な設定を知らなくても、私はこのようなものを使用することになり...

version: "2" 

services: 
    maven: 
    image: whatever 
    volumes: 
     - m2-repo:/home/foo/.m2/repository 

volumes: 
    m2-repo: 

これは、(必要に応じてパスを調整)/home/foo/.m2/repositoryにマッピングされているm2-repoと呼ばれるデータボリュームを作成します。データボリュームはDocker Composeプロジェクトのアップ/ダウン/スタート/ストップから生き残ります。

docker-compose down -vのようなものを実行してボリュームを削除すると、コンテナとボリュームが破棄されます。

+0

ありがとうございます。それは完璧に働いた! – dinesh707

関連する問題