2017-02-16 6 views
6

Я пытаюсь создать простое веб-приложение с Maven и работать с 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 с

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

Поскольку вы работаете, используя виртуальный терминал и интерактивный флаг, как следующий решает вашу проблему,

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

Это потому, что ваша база изображения java:8, который в первую очередь создан для запуска приложения в режиме переднего (с -ti флаг) или скомпилировать только в режиме -d.

Кроме того, поскольку Maven является инструменты для сборки и не должны использоваться для запуска приложения, вы должны,

  1. Создание вы WebAPP с использованием Maven: последнее изображение.
  2. Разверните его отдельно как контейнер tomcat, используя официальный tomcat image.
+0

Спасибо за совет. Поскольку я новичок в Docker и не совсем уверен, как все это делать, я полагаю, что эти 2 шага должны быть объединены Docker, я прав? – luthien

+0

Это зависит от того, как вы будете запускать приложение. Как правило, создание военных файлов и их развертывание - это два разных шага. Если вы используете jenkins, тогда это будет 2 задания/построить конвейер. Если вы все еще хотите сделать это вместе, докеры-составы - хороший вариант. – GauravJ