Openshift - могу ли я запускать команды клиента Docker (например, Docker Push), используя Openshift? - PullRequest
0 голосов
/ 25 мая 2018

Работать с 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.Предложения приветствуются!

Ответы [ 2 ]

0 голосов
/ 26 мая 2018
0 голосов
/ 26 мая 2018

Вы можете войти во внутренний реестр изображений OpenShift и вставить свое изображение прямо в него.Вам нужно сначала пометить изображение, чтобы оно совпадало с названием проекта, в котором оно было нажато.Для получения более подробной информации см .:

После отправки во внутренний реестр образов вы можете затем выполнить развертывание из этого образа, используя oc new-app или веб-консоль.

...