Работать с Docker легко, если у вас есть хост Docker.Вы подключаете Docker-клиент к Docker-хосту (движку).Тогда процесс создания и развертывания (сложного) образа докера подобен этой серии команд на сервере сборки Jenkins:
- Maven clean install => создает файл WAR
- Dockerbuild => создает изображение Wildfly с файлом WAR в нем
- Docker 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.
$ вход в докер -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.Это pro-us-east-1 и т. Д.
Файл Docker находится в папке проекта 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-A.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-A.2 : См. Ниже для инициализации настроек.При развертывании приложения / веб-сервера создайте «маршрут», чтобы клиент мог получить доступ к приложению.Поскольку это нужно сделать один раз, настройка через консоль (Приложения> Маршруты) является хорошей альтернативой.Пример: сделайте ваш сайт доступным только для https со стандартным сертификатом: (1) используйте целевой порт 8080 (где работает ваш http-сервер), (2) отметьте опцию Безопасный маршрут, (3) оставьте TLS Termination to Edge.(4) для небезопасного трафика выберите параметр «Перенаправить» и ... создайте свой маршрут.Подождите немного, и у вас будет сайт HTTPS.
Шаг 6-B : при обновлении изображения: при нажатии на существующее изображение автоматическое повторное развертывание не будет.Вы можете начать новое развертывание через онлайн-консоль или с помощью команды:
$ oc rollout latest dc / mynewapplication-n myproject
Чтобы проверить результаты развертывания:
$ oc status
Чтобы проверить, работает ли, например, контейнер MySql:
$ oc get pods
Получить имя контейнера Mysql.
$ oc rsh container-name
И вы увидите, действительно ли вы можете получить доступ к базе данных.
Замечания : Замечание по использованию Openshift Starter / Original: Приятно, что Openshift позволяет нам экспериментировать с бесплатной версией Starter.Есть, конечно, ряд ограничений на использование ресурсов.Позаботьтесь о том, чтобы установить стратегию развертывания «Воссоздать».Стратегия «Роллинг», конечно, лучше, но потребляет гораздо больше ресурсов.Я установил размер ресурса для изображения MySql обычно равным 420Mi, а для изображения Wildfly - 600Mi.Предложения приветствуются!