2015-01-07 4 views
6

Последние пару дней я провожу много времени, зарываясь в докер. Я действительно впечатлен возможностью иметь окружающую среду в развитии, которая может быть такой же, как и в производстве!Настройка среды разработки Java с помощью Docker

На данный момент я хочу начать с малого и начать улучшать процесс разработки. Мы разрабатываем Java-приложения, которые развернуты на tomcat. Разработчики используют IDE, такие как Eclipse и IntelliJ.

Во время разработки вы настраиваете свою среду tomcat в среде IDE, чтобы вы могли автоматически развертывать и отлаживать свой код. Поэтому базовый каталог tomcat должен быть доступен для настройки.

В настоящее время у меня есть изображение докеры debian с tomcat, установленным на/opt/tomcat.

Теперь я надеялся связать содержимое контейнера/opt/tomcat с каталогом на моем хосте. К сожалению, эта функция, похоже, не существует. С опцией -v вы можете монтировать только хост-каталог в контейнере, а не наоборот.

В настоящее время единственным решением, которое я вижу, будет сборка каталога webapps контейнера и падение моего военного файла здесь, что на мой взгляд довольно непроизводительно.

Вы должны запустить/перезагрузить свой tomcat вручную, возможна только удаленная отладка, у вас нет ваших журналов в вашей консоли IDE.

Итак, есть ли идеи по оптимизации рабочего процесса разработки Java Webapp с помощью докеров?

+2

В этом по-прежнему не выглядит, как это имеет реальное решение в поле зрения. Я получаю, что docker является фантастическим для изоляции сред, и все, но я действительно хочу, чтобы мы могли использовать собственный отладчик IDE, а не удаленный отладчик при разработке в локальном контейнере докеров. Я не хочу сидеть и передислоцировать приложение каждый раз, когда я вношу изменения в jsp или какой-то java-класс, он неэффективен. – openscope

+2

Я полностью с тобой. Я хочу настроить среду выполнения в своей среде IDE, а также получить журналы на моей консоли без необходимости ручной упаковки программного обеспечения. – daniel

+0

По моему опыту, самый простой способ запустить docker + tomcat - использовать встроенный tomcat. Поэтому вместо запуска tomcat и развертывания военного файла вы создаете банку, содержащую tomcat, и запускаете ее вместо этого. Главное преимущество: вы отлаживаете/запускаете одну и ту же установку в процессе разработки и производства, и очень просто создать образ докера. Я использую весеннюю загрузку для материала шаблона, но это необязательно. Он также реализуется только с maven. Вас интересовала бы такая установка? – Jan

ответ

1

Возможно, вам придется запускать Eclipse и Tomcat в одном контейнере, однако я бы определенно попытался запустить их в двух отдельных контейнерах. Возможно, начните с этого base image и попробуйте связать его с изображением Tomcat, используя общий том.

+1

эй, установка IDE в том же контейнере не является реальной опцией, потому что я хочу снова использовать контейнер и в производстве (в будущем). Я также действительно не хочу создавать контейнер для IDE, потому что разработчик должен использовать любую IDE, которую он хочет, с какой бы ОС он ни захотел. – daniel

+1

Вот почему я рекомендовал использовать контейнер с двумя контейнерами. Таким образом вы можете связать свой контейнер Tomcat с контейнером IDE только в разработке. –

+0

Но я не хочу иметь IDE в контейнере – daniel

-1

Если я правильно понимаю вашу проблему, почему бы не использовать опцию -v для установки самого файла войны. Это сработало для меня, используя wildfly.

В основном, я использую maven для построения войны и карты target/myapp.war до /opt/wildfly/myapp.war. Затем, когда я вношу изменения в приложение, я просто запускаю mvn clean package и контейнер приложения, видя, что война изменилась, перераспределяет.

Теперь это использует сканер развертывания wildfly, но может работать и для tomcat. Если нет, возможно, вы можете запустить tomcat с взорванной войной, а затем просто установить папку сборки, target/myapp, в папку webapps на tomcat.

+1

В общем, вы можете использовать tomcat для автоматического повторного развертывания, но в реальной жизни это создает больше проблем, чем решает его ... часто приводит к утечкам памяти или странному поведению webapp ... – daniel

2

Я видел blog, в котором говорилось о docliper (Eclipse + Docker).

В блоге, в основном в нижней части поста, он упомянул следующие инструменты:

Надеется, что это помогает :)

Смежные вопросы