Краткое руководство по развертыванию 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. Предложения приветствуются!

Ответы на вопрос(1)

Ваш ответ на вопрос