2016-09-21 6 views
0

wildflyとmysqlを使用している実行中のjava eeアプリケーションがあります。今私はドッカーがみんなを使っていると聞いています。それは非常に生産的なので、私は自分の開発環境をドッキングすることに決めました。それよりも簡単に聞こえます。java eeアプリケーションでMavenを実行するドッカー画像

何私がこれまで持っている:

  • Mavenを.warファイルに私のローカルにインストールwildflyインスタンス上でテストを実行
  • Arquillianユニットテストを自分のアプリケーションをパッケージ化するため

何I必要:

  • アプリケーションを実行するために定義済みのドッカー画像(jboss/wildfly、...)を使用します。
  • また、ドッカーコンテナでテストを実行しています。

私はMavenの-ドッキングウィンドウ - プラグインでドッキングウィンドウのイメージを構築することにより始まった:

<plugin> 
    <groupId>com.spotify</groupId> 
    <artifactId>docker-maven-plugin</artifactId> 
    <version>0.4.13</version> 
    <configuration> 
     <imageName>netbeans/sampleapplication</imageName> 
     <dockerDirectory>src/main/docker</dockerDirectory> 
     <resources> 
     <resource> 
      <targetPath>/</targetPath> 
      <directory>${project.build.directory}</directory> 
      <include>${project.build.finalName}.war</include> 
     </resource> 
     </resources> 
     <execution> 
     <id>build-image</id> 
     <phase>package</phase> 
     <goals> 
      <goal>build</goal> 
     </goals> 
     </execution> 
    </configuration> 
</plugin> 

Dockerfile:

FROM jboss/wildfly 
COPY *.war /opt/jboss/wildfly/standalone/deployments/app.war 
EXPOSE 8080 9990 

のMavenコマンド:clean package docker:build。 以前のlocalhostではなく、私のdocker-maschineのURLだけでアプリケーションサーバーにアクセスできます。ドッキングウィンドウのイメージを構築するアプリケーション

  • を構築

    1. (wildfly、mysqlの...)
    2. 実行arquillian JUnitテスト
    3. 展開:私はちょうどのための単一のmavenコマンドを使用したい最後に アプリケーションとは、ローカルホストを経由して、それを公開:8080の新しい展開は、私は本当にstrugglinい

    行われた場合

  • ストップコンテナそれとg。誰かがこれをする方法アイデア?

  • 答えて

    3

    ドッカータスクのいくつかは簡単にmavenフェーズにマッピングできないため、これを行う方法はありません。だから、あなたが好きな仕事の仕方を選択する必要があります。

    だから、うまくいけば、解決につながるいくつかの考え:

    は、Spotifyは、ドッキングウィンドウ - Mavenプラグインは、イメージを実行するには何のモジョの(maven goals)を持っていません。主なタスクは、ドッカー画像を作成して公開することです。

    イメージを実行するには、単純にbashスクリプトを書くことができます(単純なので、git bashコマンドラインを使用してLinuxやWindowsでも実行されるため)。 maven-exec-pluginを使用してこれらのスクリプトを実行できます。

    これをMavenのライフサイクルに適切にマッピングするのは少し難解です。

    これに最適な段階(私の意見でのみ)はintegration-test phaseです。このフェーズは、事前統合テストフェーズ、統合テストフェーズ、および統合後テストフェーズを備えています。コンセプトは、事前段階でコンテナを起動することです。次に、failsafe-plugin(ビルドが失敗しないようにする)を使用して統合テストフェーズでテストを実行し、後段階でコンテナをクリーンアップします。プレ・フェーズでもそのプロジェクトのコンテナをクリーンアップすることをお勧めします。ちょっとしたゾンビ・コンテナがぴったりだとしたら。

    これらの手順をプロファイルに入れることができます。統合テストにも統合テスト段階が必要なため、異なるプロファイル(mvn verify & & mvn verify -P docker-tests & & mvn -P docker-other-tests)を使用して「maven verify」を実行することになります。

    もう1つの方法は、maven plugin created by fabric8を使用することです。 このプラグインは、spotifyによって作成されたプラグインよりも少し複雑です(私の意見のみ)。しかしそれはより多くの目標と共に来る。

    プラグインの<packaging>docker</packaging>を使用すると、ドッカーの実行と停止の目標はalready mapped to the lifecycleです。

    どちらのプラグインも、同様の複雑さをpom.xmlに持っています。これは、ファブリックプラグインによる読み込みのほんの一部です。しかし、いくつか素敵なexamples and a good user manualがあります。

    これは私の頭に浮かんだ2つの選択肢です。これが役に立ちますようお願いいたします。

    1

    JBoss Wildflyコンテナを直接使用する代わりに、Wildfly Swarmもチェックしてください。ワイルドフライの別のディストリビューションで、ドッカーに関するさらに詳しい情報があります。

    +0

    私は間違いなくそれを見てみましょう!非常に有望に見えます。別のデータベースコンテナと一緒に再生する方法を見てみましょう。 – perotom

    関連する問題