Большинство из вас помнят, что у меня немного истории на сервере Oracle WebLogic. Возвращаясь к временам BEA. Я не хочу комментировать последние разработки, функции или стандартную поддержку, но одно можно сказать наверняка: многие пользователи оценят возможность запуска в контейнере. Может быть, это единственное, что будет иметь реальное значение в нашей отрасли с постоянным прогрессом в области контейнеризации. Фактически мы можем управлять компонентами разнородной инфраструктуры на общей основе. Если у нас есть правильные инструменты под рукой. И это верно для операционной стороны OpenShift и, конечно, для всех разработчиков, которые по достоинству оценят, что может сделать для них Fabric8.
Лицензионное предисловие
Что бы ни происходило в этом блоге, это происходит только на моем локальном ноутбуке разработчика. И я твердо верю, что в отношении технологий Oracle это абсолютно подпадает под действие так называемого лицензионного соглашения для разработчиков OTN Free и лицензионного соглашения для двоичного кода Oracle для Java SE .
Я абсолютно уверен, что производственной среде нужна куча лицензий. Но я не специалист. Так что не спрашивайте меня. Если вы хотите использовать RHEL 7, пожалуйста, узнайте о подписках Red Hat .
Хорошо, WebLogic — где твой образ?
Не там. Я предполагаю по причинам лицензирования. Но Bruno проделал огромную работу, отправив соответствующие файлы Dockerfiles и скрипты на официальный аккаунт Oracle GitHub . Так. первый шаг в запуске WebLogic в Kubernetes — это создание образа докера с ним. Идти,
1
|
git clone https: //github .com /oracle/docker |
и перейдите в папку OracleWebLogic. На самом деле, вы можете удалить все остальное, кроме этого. Первым шагом является загрузка установщика ZIP WebLogic и необходимого JDK.
Перейдите на веб-сайт Oracle , примите лицензию OTN (если хотите) и загрузите независимый от платформы установщик ZIP (wls1213_dev_update2.zip).
Теперь перейдите на веб-сайт загрузки JDK , выполните ту же процедуру лицензирования и загрузите JDK 8u51, что и rpm (jdk-8u51-linux-x64.rpm). Поместите оба в папку OracleWebLogic \ dockerfiles \ 1.2.1.3. Если вы работаете на Unix-подобной ОС, не стесняйтесь проверить официальную документацию и использовать предоставленные скрипты. Это не сработало для меня в Windows, так что вы проходите пошаговую инструкцию. Перейдите и переименуйте Dockerfile.developer в Dockerfile и удалите все остальные.
1
2
|
mv Dockerfile.developer Dockerfile rm Dockerfile.* |
Теперь вы открываете Dockerfile и меняете несколько вещей. Основывайтесь на 7-м РЕЛЕ:
1
|
FROM rhel7 |
И закомментируйте другую базу, которая там есть … И поскольку мы хотим запустить исправленную и доступную версию Java, мы соответственно изменим переменную среды:
1
|
ENV JAVA_RPM jdk-8u51-linux-x64.rpm |
Время построить наш имидж. И прежде чем начать, давайте повторно воспользуемся установщиком fabric8 vagrant, который я уже использовал для последних двух постов в блоге . Итак, сначала приведите ваш бродячий экземпляр с помощью OpenShift. Теперь пришло время построить образ WebLogic. Расслабьтесь и расслабьтесь, потому что это займет еще пару минут. У вас есть уборка? Это может быть подходящее время!
1
|
docker build --force- rm = true --tag= "vagrant.f8:5000/oracle/weblogic:12.1.3-dev" . |
Готово? Проверьте, все ли там, где мы ожидаем: (изображения докера)
1
|
vagrant.f8:5000 /oracle/weblogic 12.1.3-dev 68f1ea788bba About a minute ago 2.05 GB |
Поскольку этот образ содержит только двоичные файлы сервера, теперь нам нужно создать образ с настроенным доменом WLS. К счастью, в папке samples \ 12c-domain есть еще несколько скриптов. Итак, проверьте, имеет ли Dockerfile и все сценарии в контейнерах-сценариях правильный конец строки UNIX. Иногда Git может испортить их, если вы используете Windows. И если вы уже там, не забудьте изменить некоторые порты в соответствии с вашими потребностями. Мне пришлось изменить порт администратора на 8011 (сделать это в сценарии Dockerfile и add-machine.py. Еще одна вещь, которую мы хотим сделать, — запустить экземпляр в режиме разработки. Это позволяет нам просто скопировать наше приложение Java EE в папку ./autodeployment и разверните ее при запуске. Вы можете просто изменить атрибут в следующей строке с prod на dev:
1
|
setOption( 'ServerStartMode' , 'dev' ) |
Теперь вы готовы к созданию образа домена разработки:
1
|
docker build --force- rm = true --tag= "vagrant.f8:5000/myfear/weblogic:12.1.3-dev" |
И, после еще нескольких чашек кофе, мы готовы проверить, попало ли это изображение в наш репозиторий (изображения докеров)
1
|
vagrant.f8:5000 /myfear/weblogic 12.1.3-dev 77a3ec07d176 9 minutes ago 2.052 GB |
Прежде чем идти дальше, обязательно попробуйте и посмотрите, подходит ли экземпляр Weblogic.
1
|
docker run -it myfear /weblogic :12.1.3-dev |
Если это сработало, вы готовы создать свой третий образ сегодня. Который будет содержать вашу заявку.
NetBeans и Fabric8 — перенесите WebLogic в греческое небо
Запустите NetBeans и создайте красивый, простой и компактный проект Java EE 6 из архетипа maven по вашему выбору. Добавьте к нему все зависимости от плагинов fabric8 и docker-maven, как я уже показывал в первом посте из этой серии . Давайте настроим свойства под наши нужды и назовем изображение: myfear / weblogic-test: latest. Самое главное, вы должны правильно сопоставить порт контейнера со службой Kubernetes:
01
02
03
04
05
06
07
08
09
10
11
|
<!-- Kubernetes Service Port // Mapped via the HARouter--> <fabric8.service.port>9050< /fabric8 .service.port> <!-- The exposed container port --> <fabric8.service.containerPort>8011< /fabric8 .service.containerPort> <!-- because, I'm working with the remote registry here, base it on the remote image --> <docker.from>vagrant.f8:5000 /myfear/weblogic :12.1.3-dev< /docker .from> <!-- Just cosmetics, changing the container label --> <fabric8.label.container>weblogic< /fabric8 .label.container> |
Не забудьте использовать Java EE 6 в качестве зависимости и изменить как пользователя, так и базу развертывания в плагине docker-maven на:
1
2
|
<user>oracle:oracle:oracle< /user > <basedir> /u01/oracle/weblogic/user_projects/domains/base_domain/autodeploy/ < /basedir > |
Время построить третий и последний образ докера:
1
|
mvn clean install docker:build |
И если все закончится правильно, мы собираемся развернуть все в OpenShift с помощью инструмента Fabric8:
1
|
mvn fabric8:json fabric8:apply |
И не забудьте добавить отображение имени хоста в ваш файл hosts.
1
|
172.28.128.4 myfear-weblogic- test .vagrant.f8 |
Запрос http: //myfear-weblogic-test.vagrant.f8/sample показывает приложение после того, как вы подождали пару минут (по крайней мере, мне пришлось; похоже, мой ноутбук был недостаточно быстрым).
Некоторые дальнейшие замечания
Это не совсем готово к производству. WLS знает управляемые серверы и диспетчеры узлов, и существует множество портов для внешней связи, которые необходимо открыть. По сути, это не более чем развертывание подросткового приложения на AdminServer. Есть несколько технических документов и дальнейших идей о том, как настроить скрипты домена в соответствии с вашими потребностями. Я не хотел этого делать по понятным причинам. Итак, рассмотрим это как доказательство концепции.
Ссылка: | WebLogic Server 12.1.3 на Kubernetes от нашего партнера по JCG Маркуса Эйзела ( Markus Eisele) из блога « Разработка программного обеспечения для предприятий с использованием Java» . |