LoginSignup
5
3

More than 5 years have passed since last update.

Maven を動かすDocker コンテナを作ってみた

Posted at

Docker Store で公開している Oracle Java を使用して、Apache Maven を実行することが可能な Docker Image を作成

説明

Java プロジェクトのプロジェクト管理ツール(ビルドや構成管理)として有名なツールに Apache Maven が有名です。この Maven を利用するためには通常は Java をインストールして、Maven をインストールして、パスを通し、JAVA_HOME や MAVEN_HOME の設定などを行う必要があります。
そのような一連の環境を予め Docker イメージとして用意しました。これを利用する事で Maven が導入されていなくとても Maven プロジェクトのビルドをする事ができるようになります。

ここで用意した Maven 環境は、Java のランタイムとしては、Docker Store で公開している Oracle 提供の Java 8 を利用します。

以下が、Java と Maven のバージョン情報です。

  • Java: Oracle JDK 8 (1.8.0_131 : 2017年7月時点での latest イメージのバージョンです)
  • Mavan: Maven 3.5.0

動作イメージ

Maven が導入されていない環境で Docker コンテナ内の Maven によるプロジェクトビルドを行う動作イメージです:

Demo

前提

  • Docker Store のアカウントを持っていること
  • Oracle Java 8 の Docker イメージを Docker Store でチェックアウトしていること

Oracle JDK 8

導入

Docker Hub に公開しているイメージを取得します

docker pull shinyay/docker-mvn-jdk8:3.5.0

使用方法

ホスト環境にある Maven プロジェクトを Docker コンテナにマウントし、ワークディレクトリを マウントポイントに移動して Maven コマンドを実行します。

docker run -it --rm -v [ホスト環境の Mavenプロジェクトパス]:[コンテナ環境内のマウントポイント] -w [コンテナ環境内のマウントポイント] shinyay/docker-mvn-jdk8:3.5.0 mvn [MAVEN GOAL]

Docker オプション

  • -it : 標準入力/tty端末デバイスの確保
  • --rm : コンテナ終了時にコンテナを破棄
  • -v : ボリュームマウント
  • -w : 作業用ディレクトリの指定(デフォルトはルートディレクトリ )

例1: mvn clean

docker run -it --rm -v /home/shinyay/works/mvn-projects/mvn-webapp/mytest-app:/usr/src/mvnproject -w /usr/src/mvnproject shinya/mvn:3.5.0 mvn clean

例2: mvn package

docker run -it --rm -v /home/shinyay/works/mvn-projects/mvn-webapp/mytest-app:/usr/src/mvnproject -w /usr/src/mvnproject shinya/mvn:3.5.0 mvn package

まとめ

Maven が入っていない仮想イメージを使用する時などに便利に使えます。

今後の改善点は、Maven実行後のリポジトリをキャッシュしていないので、再度実行しようとしたときに依存ライブラリの再取得が発生してしまうことです。ただ、ホスト環境の Mavenリポジトリと共有するとよさそうですね。

5
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3