2017-02-16 19 views
6

Mockを使って単純なWebアプリケーションを構築し、Dockerコンテナ内でTomcat7を実行しようとしています。dockerコンテナでmaven webappを実行する

これは私の構造体である:

- Dockerfile 
- pom.xml 
- src/main/webapp/index.hmtl 

これは私のDockerfileです:

FROM java:8 

# Install maven 
RUN apt-get -y update && apt-get install -y maven 

WORKDIR /code 

# Prepare by downloading dependencies 
ADD pom.xml /code/pom.xml 

# Adding source, compile and package into a fat jar 
ADD src /code/src 
RUN ["mvn", "package"] 

EXPOSE 8080 
CMD ["mvn", "tomcat7:run"] 

私は

docker build -t webapp-example . 

とドッカーイメージを構築し、

でそれを実行しようとしています
docker run -d -p 8080:8080 webapp-example 

しかし、明らかに動作しません。

アイデア?

+0

ログにエラーがありますか? – yorammi

+1

'docker run -ti --rm -p 8080:8080 webapp-example'を使って試してみて、ここに詳細を貼り付けることができますか? – GauravJ

+0

私はエラーがなく、 'mvn tomcat7:run'をコンテナから実行するとログは正常です。 @ GauravJ何らかの理由で、あなたのコマンドで、私のアプリケーションが実行されている!どうもありがとう! – luthien

答えて

4

次のようなTTYとインタラクティブなフラグを使用して実行しても、あなたの問題を解決し共有しているため、

docker run -ti --rm -p 8080:8080 webapp-example

お使いのベースイメージは主に-tiと(フロント・モードでアプリケーションを実行するために作成されjava:8であるからですフラグ)、または-dモードでのみコンパイルします。 Mavenのビルドツールをされ、アプリケーションを実行するために使用すべきではありませんので、

また、あなたは、

  1. は、Mavenを使用して、あなたのWebアプリケーションを作成する必要があります。最新の画像を。
  2. 正式名称はtomcat imageです。
+0

アドバイスをいただきありがとうございます。私はDockerを初めて使っているので、まだ2つのステップをDockerの組み合わせで結合する必要があると思います。 – luthien

+0

アプリケーションをどのように実行するかによって異なります。一般に、warファイルを作成して展開するには、2つのステップがあります。あなたがジェンキンを使用している場合、それは2つのジョブ/ビルドパイプラインになります。それでも一緒にやりたいのであれば、ドッカーの作成は良い選択です。 – GauravJ

関連する問題