Краткое руководство по развертыванию Java-приложений в OpenShift
ать с Docker легко, если у вас есть хост Docker. Вы подключаете Docker-клиент к Docker-хосту (движку). Тогда процесс создания и развертывания (сложного) образа докера подобен этой серии команд на сервере сборки Jenkins:
Maven clean install => создает ваш WAR-файлDocker build => создает образ Wildfly с файлом приложения WARDocker tag => помечает новое изображениеDocker push => выталкивает изображение в док-концентраторDocker run ==> устанавливает и запускает образ докера на хосте докера.Может ли Openshift Starter работать так? Ответ: да, эта опция «Контейнер как услуга» (CAAS) возможна.
ПОЛНОЕ РЕШЕНИЕ:В следующих шагах я создаю проект, состоящий из 2 изображений: MySql и SpringBoot / Angular / Hibernate, размещенных на сервере Wildfly. Это работает, конечно, и для JAR-приложения Spring Boot.
Вы начинаете с локально работающего демона Docker. Я делаю это через Docker Quickstart Terminal. Я использую минишифт только для локального тестирования - поэтому не в этом случае.
Шаг 1: создать проект и 1 приложение MySql.
Это можно сделать без докера через веб-консоль Openshift. Вы также можете использовать команду oc new-proect.
Шаг 2: войти в проект openshift. В онлайн-консоли нажмите на знак вопроса на верхней панели (справа). Выберите «Инструменты командной строки». Вы можете скопировать команду входа в буфер обмена с помощью значка справа.
$ oc login etc ... (первый значок буфера обмена, вставьте всю команду).
Шаг 3: Войдите в свой реестр докеров. В этом случае проверьте онлайн-консоль openshift.
$ docker login -u `oc whoami` -p` oc whoami --show-token` registry.pro-us-east-1.openshift.com
ВНИМАНИЕ: не используйте номер порта в качестве суффикса openshift: 443 !!
Шаг 4: Создайте и пометьте изображение локально или на сервере сборки (с помощью Jenkins).
$ mvn clean install - создает файл войны. Вы можете назвать это «ROOT.war».
$ docker build -t myproject / mynewapplication: последнее.
$ docker tag myproject / mynewapplication registry.pro-us-east-1.openshift.com/myproject/mynewapplication
Если вы напишите имя не правильно, через мгновение вы не сможете нажать на изображение. Так что (!) Не пишите pro-us-east1. Это про-нас-восток-1 и т. Д.
Dockerfile находится в папке проекта Maven. Dockerfile может выглядеть так:
FROM jboss/wildfly
COPY target/ROOT.war /opt/jboss/wildfly/standalone/deployments/
# CMD - use the default wildfly default start command
Гораздо более эффективный способ памяти:
FROM openjdk:8-jdk-alpine
ENV JAVA_APP_JAR your.jar
ENV AB_OFF true
EXPOSE 8080
ADD target/$JAVA_APP_JAR /deployments/
CMD ["java","-XX:+UnlockExperimentalVMOptions", "-XX:+UseCGroupMemoryLimitForHeap", "-jar","/deployments/your.jar"]
Последние настройки значительно улучшат / уравновесят использование вашей памяти. В моем случае сокращение рабочего контейнера с 600 МБ + до 300 МБ работает нормально!
Шаг 5: Вставьте изображение во внутренний репозиторий Openshift
$ docker push registry.pro-us-east-1.openshift.com/myproject/mynewapplication
Шаг 6-А.1Создайте приложение из существующего образа докера с помощью команды new-app. Делайте это только в первый раз при создании приложения.
$ oc new-app mynewapplication
--> Found image 1233123223 (About an hour old) in image stream "myproject/mynewapplication" under tag "latest" for "mynewapplication" ... This image will be deployed in deployment config "mynewapplication" --> Creating resources ... deploymentconfig "mynewapplication" created service "mynewapplication" created --> Success Run 'oc status' to view your app.
Шаг 6-А.2: См. Ниже для инициализации настроек. При развертывании приложения / веб-сервера создайте «маршрут», чтобы клиент мог получить доступ к приложению. Поскольку это нужно сделать один раз, настройка через консоль (Приложения> Маршруты) является хорошей альтернативой. Пример: сделайте ваш сайт доступным только для https со стандартным сертификатом: (1) используйте целевой порт 8080 (где работает ваш http-сервер), (2) отметьте опцию Безопасный маршрут, (3) оставьте TLS Termination to Edge. (4) для небезопасного трафика выберите параметр «Перенаправить» и ... создайте свой маршрут. Подождите немного, и у вас будет сайт HTTPS.
Шаг 6-Б: При обновлении изображения: при нажатии на существующее изображение автоматическое повторное развертывание не будет. Вы можете начать новое развертывание через онлайн-консоль или команду:
$ oc rollout последняя версия dc / mynewapplication-n myproject
Чтобы проверить результаты развертывания:
$ oc status
Чтобы проверить, например, контейнер MySql работает:
$ oc get pods
Получить имя контейнера Mysql.
$ oc rsh container-name
И вы увидите, действительно ли вы можете получить доступ к базе данных.
замечанияЗамечание по использованию Openshift Starter / Original: Приятно, что Openshift позволяет нам экспериментировать с бесплатной версией Starter. Есть, конечно, ряд ограничений на использование ресурсов. Позаботьтесь о том, чтобы установить стратегию развертывания «Воссоздать». Стратегия «Роллинг», конечно, лучше, но потребляет гораздо больше ресурсов. Я установил размер ресурса для изображения MySql обычно равным 420Mi, а для изображения Wildfly - 600Mi. Предложения приветствуются!