Здравствуйте!
Помогите кто чем может)
Начал изучать docker и что- то не задалось…
Задача:
Есть образ с томкатом
Нужно запустить контейнер подкинуть туда варик и запустить томкат.(2я задача поставить деб пакет)
Не могу найти норм. статьи в помощь…
Нашел только про DockerFile и сборку образа, но мне не совсем это подходит. Мне не нужно собирать образ
мне просто нужно задеплоить приложение для тестов в контейнер…
Спасибо.
Вам нужно деплоить в уже запущенный контейнер что-ли?
- Замапте директорию с хост ОС (где появляется war) на webapps директорию tomcat в контейнере.
- По идее там должна быть опция динамического деплоя, чтобы не перезапускать сервер.
А вообще, чем не устроил вариант правки / наисания нового dockerfile, явно копируя ваш app в качестве build step’а в контейнер?
Я мыслил “терминами вагранта” что ли… Запустил бокс, скопировал файл, запустил томкат. Я понимаю, что это совершенно разные вещи, но понять как это делать, в docker что-то не получается… Может он не подходит для моих целей? Но я только и слышу вокруг “тесты на docker” “тесты на docker” … Вот решил попробовать)
Ну я думал, что собирать образ каждый раз - идея не очень хорошая… Хотя судя по всему это одна из “фишек” docker…
А каждый раз - это как часто? Если сопутствующие образы уже хотя бы раз загружены, процесс занимает минимум времени. К тому же, вы ведь когда деплоите приложение при помощи CI, тоже ждете некоторое время? Так чем этот процесс отличается? Хотите новую версию? Да, придется подождать. Хотя, вариант с мэпингом фолдера тоже должен работать.
согласен с ArtOfLife. Лучше мапить директорию и запускать сервер - еще нужно будет написать скрипт, который будет ждать пока ваше приложение будет готово к работе.
Что касается сборки образа каждый раз - если честно, не уверен в том, что это хорошая идея, хотя в целом зависит от ваших нужд и конфигурации, но при этом подходе вы быстро захламите диск новыми слоями вашего образа. Up to you, как говорится.
Попробуйте GitHub - testcontainers/testcontainers-java: Testcontainers is a Java library that supports JUnit tests, providing lightweight, throwaway instances of common databases, Selenium web browsers, or anything else that can run in a Docker container., если пишете на java. Запуск делается весьма просто:
GenericContainer tomcat = new GenericContainer("tomcat:8.0");
tomcat.withExposedPorts(8080);
tomcat.addFileSystemBind(warPath,
"/usr/local/tomcat/webapps/myapp.war", BindMode.READ_ONLY);
tomcat.start();
System.out.println("http://" + tomcat.getContainerIpAddress() + ":" + tomcat.getMappedPort(8080));
всё. Если для вашего тестового приложения нужны каки-то базы и прочие вещи, можете перед запуском tomcat слинковать контейнеры аля
tomcat.addLink(rabbit, “rabbitmq”);
Теперь если мне кто-то в ответ покажет как это сделать на weblogic, буду благодарен.
Спасибо. Попробую
Как бы сделал я:
-
Написать Dockerfile с установкой tomcat и всеми необходимыми зависимостями для проекта.
В Dockerfile добавил бы bash скрипт через ADD и поставил бы его в RUN, чтобы он пускался при старте. -
В bash скрипте из п.1 делается установка пакета и запуск приложения, а так же все действия по его развертыванию, если требуется останавливать и запускать повторно, то делается проверка на то, что установлено все или нет, чтобы например не перезатереть разворачиваемую БД или папочки с файликами.
-
собираем один раз образ через docker build
-
Запускаем сколько хочется раз docker run с параметром -d и -v <нужная_директория>:<в_нужное_место>
Запилил аналогичную штуку для любителей питона