update help elma
This commit is contained in:
@ -1,20 +1,19 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<title>Создание собственного микросервиса</title>
|
||||
<title>Create a custom microservice</title>
|
||||
<meta name="generator" content="Help+Manual" />
|
||||
<meta name="keywords" content="" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="description" content="ELMA365 — это решение с микросервисной архитектурой. Оно состоит из небольших, слабо связанных и легко изменяемых модулей — микросервисов. Эти сервисы построены вокруг..." />
|
||||
<meta name="description" content="BRIX is an application with a microservice architecture. It consists of small-scale, loosely connected modules called microservices. These services are dedicated to certain..." />
|
||||
<meta name="picture" content="" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="Cправка по Low-code платформе ELMA365" />
|
||||
<meta property="og:url" content="https://elma365.com/ru/help" />
|
||||
<meta property="og:image" content="" />
|
||||
<meta property="og:site_name" content="ELMA365" />
|
||||
<meta property="og:title" content="Full documentation for BRIX365 platform. Low-code developer guide. User guide. Admin guide. Developer guide." />
|
||||
<meta property="og:url" content="https://brix365.com/en/help" />
|
||||
<meta property="og:image" content="" />
|
||||
<link rel="icon" href="favicon.png" type="image/png" />
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap" rel="stylesheet" />
|
||||
@ -24,7 +23,6 @@
|
||||
<link rel="stylesheet" href="./article.css" />
|
||||
<link rel="stylesheet" href="./glossary.css" />
|
||||
<link rel="stylesheet" href="./theme.css" />
|
||||
|
||||
<script type="text/javascript" src="jquery.js"></script>
|
||||
<script type="text/javascript" src="helpman_settings.js"></script>
|
||||
<script type="text/javascript" src="helpman_topicinit.js"></script>
|
||||
@ -36,16 +34,16 @@
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-M6ETBEC1R9"></script><script>window.dataLayer=window.dataLayer || []; function gtag(){dataLayer.push(arguments);}gtag('js', new Date()); gtag('config', 'G-M6ETBEC1R9');</script>
|
||||
|
||||
<script>!function(e,t,c,n,r,a,m){e.ym=e.ym||function(){(e.ym.a=e.ym.a||[]).push(arguments)},e.ym.l=1*new Date;for(var s=0;s<document.scripts.length;s++)if(document.scripts[s].src===n)return;a=t.createElement(c),m=t.getElementsByTagName(c)[0],a.async=1,a.src=n,m.parentNode.insertBefore(a,m)}(window,document,"script","https://mc.yandex.ru/metrika/tag.js"),ym(83179930,"init",{clickmap:!0,trackLinks:!0,accurateTrackBounce:!0,webvisor:!0})</script><noscript><div><img alt=""src=https://mc.yandex.ru/watch/83179930 style=position:absolute;left:-9999px></div></noscript>
|
||||
|
||||
<header class="header elma-365">
|
||||
<div class="container">
|
||||
<a class="header__logo" href="https://elma365.com/ru/help">
|
||||
<img src="./logo.svg" alt="header logo">
|
||||
<a class="header__logo" href="https://brix365.com/en/help">
|
||||
<img src="./logo-en.svg" alt="header logo">
|
||||
</a>
|
||||
<!-- <div class="hero__search-form" id="search-panel">
|
||||
<form class="search-form" onsubmit="ym(83179930,'reachGoal','poisk')">
|
||||
<form class="search-form" onsubmit="ym(83180416,'reachGoal','poisk')">
|
||||
<label class="search-form__label">
|
||||
<span id="reset-search" class="search__icon"></span>
|
||||
<input class="search-form__input" type="text">
|
||||
@ -65,7 +63,7 @@
|
||||
</div>
|
||||
<div class="header__navi">
|
||||
|
||||
<ul class="header__list"><li><span class="solution-select"><span class="solution-select__selected"></span><svg width="7" height="4" viewBox="0 0 7 4" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L3.5 3.5L6 1" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg><ul class="solution-select__list"><li><a class="project-link" href="https://elma365.com/ru/help/platform/get-trial.html">Платформа</a></li><li><a class="project-link" href="https://elma365.com/ru/help/ecm/ecm-functions.html">ECM</a></li><li><a class="project-link" href="https://elma365.com/ru/help/crm/crm_overview.html">CRM</a></li><li><a class="project-link" href="https://elma365.com/ru/help/service/service-functions.html">Service</a></li><li><a class="project-link" href="https://elma365.com/ru/help/projects/projects-functions.html">Проекты</a></li><li><a class="project-link" href="https://elma365.com/ru/help/business_solutions/-elma365-store.html">Бизнес-решения</a></li></ul></span></li><li><a href="https://api.elma365.com/ru/"target="_blank">API</a></li><li><a href="https://tssdk.elma365.com/"target="_blank">SDK</a></li><li><a href="https://community.elma365.com/" target="_blank">Community</a></li><li><a href="https://elma-academy.com/ru/" target="_blank">Академия</a></li><li><a href="https://elma365.com/ru/" target="_blank">Сайт ELMA365</a></li></ul>
|
||||
<ul class="header__list"><li><span class="solution-select"><span class="solution-select__selected"></span><svg width="7" height="4" viewBox="0 0 7 4" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M1 1L3.5 3.5L6 1" stroke="white" stroke-linecap="round" stroke-linejoin="round"/></svg><ul class="solution-select__list"><li><a class="project-link" href="https://brix365.com/en/help/platform/get-trial.html">Platform</a></li><li><a class="project-link" href="https://brix365.com/en/help/ecm/ecm-functions.html">ECM</a></li><li><a class="project-link" href="https://brix365.com/en/help/crm/crm_overview.html">CRM</a></li><li><a class="project-link" href="https://brix365.com/en/help/service/service-functions.html">Service</a></li><li><a class="project-link" href="https://brix365.com/en/help/projects/projects-functions.html">Projects</a></li><li><a class="project-link" href="https://brix365.com/en/help/business_solutions/-elma365-store.html">Business Solutions</a></li></ul></span></li><li><a href="https://api.brix365.com/en/" target="_blank">API</a></li><li><a href="https://tssdk.brix365.com/" target="_blank">SDK</a></li></ul>
|
||||
|
||||
|
||||
</div>
|
||||
@ -80,8 +78,8 @@
|
||||
|
||||
<aside class="sidebar" id="sidebar">
|
||||
<div class="sidebar__header">
|
||||
<a class="header__logo" href="https://elma365.com/ru/help">
|
||||
<img src="./logo-light.svg">
|
||||
<a class="header__logo" href="https://brix365.com/en/help">
|
||||
<img src="./logo-light-en.svg">
|
||||
</a>
|
||||
<span class="sidebar__close elma-365-close" id="close"></span>
|
||||
</div>
|
||||
@ -94,15 +92,15 @@
|
||||
<div class="article-inner">
|
||||
<div class="content">
|
||||
<header class="article__header">
|
||||
<div class="article__bread" style="display:flex; gap:10px;">
|
||||
<div class="article__bread" style="display:flex; gap:10px;">
|
||||
<span id="subcategory" class="search-res__item-category search-res__item-category_subcategory subcategory article__badge"></span>
|
||||
|
||||
<div class="topic__breadcrumbs">
|
||||
<p><a href="solutions-building.html">Разработка решений на платформе ELMA365</a> / Создание собственного микросервиса</p>
|
||||
<p><a href="solutions-building.html">Build solutions in BRIX</a> / Create a custom microservice</p>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Создание собственного микросервиса</span></h1>
|
||||
<div class="topic__title"><h1 class="p_Heading1"><span class="f_Heading1">Create a custom microservice</span></h1>
|
||||
</div>
|
||||
|
||||
</header>
|
||||
@ -111,68 +109,68 @@
|
||||
<a href="#h1-article" class="scroll-top"></a>
|
||||
</div>
|
||||
<!-- Placeholder for topic body. -->
|
||||
<p class="p_Normal">ELMA365 — это решение с микросервисной архитектурой. Оно состоит из небольших, слабо связанных и легко изменяемых модулей — микросервисов. Эти сервисы построены вокруг бизнес-потребностей и в большинстве случаев выполняют одну или несколько элементарных функций. </p>
|
||||
<p class="p_Normal">Сервисы разворачиваются независимо друг от друга, могут быть написаны на разных языках и использовать разные технологии хранения данных. Подробнее об этом читайте в статье <a href="architecture.html" class="topiclink">«Архитектура»</a>. </p>
|
||||
<p class="p_Normal">Вы можете создать свой сервис и разместить его внутри Kubernetes-кластера. Это позволит расширить функциональные возможности системы. Например, можно создать сервис для работы с файлами <span style="font-weight: bold;">*.xlsx</span>. Он будет считывать строки и сохранять их в приложения. </p>
|
||||
<p class="p_Normal">Создавать свой сервис нужно тогда, когда без него нельзя решить задачу. Например, вам нужно подключить внешнюю библиотеку. Для интеграции с внешними системами достаточно использования <a href="solutions-building.html" class="topiclink">решений</a>.</p>
|
||||
<p class="p_Normal">Сервис может быть написан на любом языке программирования, для развёртывания его внутри ELMA365 требуется только Docker-образ.</p>
|
||||
<p class="p_Normal">Ниже приводится пример по созданию сервиса на .NET Core 5.</p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Создание сервиса на .NET</span></h2>
|
||||
<p class="p_Normal">Откройте Visual Studio 2019. Создайте новый проект и задайте настройки, как показано на скриншотах ниже.</p>
|
||||
<p class="p_Normal">Так как система ELMA365 разворачивается на Ubuntu, укажите, что нужно включить Docker. Тип контейнера — Linux.</p>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><img alt="service1" width="734" height="525" style="margin:0;width:734px;height:525px;border:none" src="service1.png"/></p>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><img alt="service2" width="685" height="472" style="margin:0;width:685px;height:472px;border:none" src="service2.png"/></p>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><img alt="service3" width="647" height="501" style="margin:0;width:647px;height:501px;border:none" src="service3.png"/></p>
|
||||
<p class="p_Normal">VS создаст проект по умолчанию. Можно запустить его в Docker, чтобы убедиться, что сервис работает и отвечает.</p>
|
||||
<p class="p_Normal">После проверки можно переходить к следующему шагу.</p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Подготовка проекта и выгрузка в Docker Hub</span></h2>
|
||||
<p class="p_Normal">Чтобы система могла скачать Docker-образ, его нужно поместить в Docker-хранилище. В нашем примере мы будем использовать публичное хранилище<span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; color: #800000;"> </span><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; color: #800000;"><a href="https://hub.docker.com/" class="weblink">https://hub.docker.com/</a>. </span>В нём необходимо зарегистрироваться.</p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">BRIX is an application with a microservice architecture. It consists of small-scale, loosely connected modules called microservices. These services are dedicated to certain business needs, and they are mostly used for one or several basic functions. </span></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">Services are deployed independently. They can be written in different programming languages and use different data storage methods. Read more in the <a href="architecture.html" class="topiclink">Architecture</a> article.</span></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">You can create your own service and locate it inside the Kubernetes cluster. This allows you to expand the system’s functionality. For example, you can create a service for working with *</span><span style="font-family: Inter; font-weight: bold;">.xlsx</span><span style="font-family: Inter;"> files. It can read rows of data and save them to apps.</span></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">You need to create custom services only when other options don’t suffice. For example, you may need to add an external library. To create an integration with an external system, it is enough to use a <a href="solutions-building.html" class="topiclink">solution</a>.</span></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">You can write a service in any programming language. You just need a Docker image to deploy it in BRIX. </span></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">Below is an example of creating a service using .NET Core 5.</span></p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Create a service with .NET</span></h2>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">Open Visual Studio 2019. Create a new project and configure the settings as shown on screenshots below.</span></p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;"><span style="font-family: Inter;">As BRIX is deployed on Ubuntu, enable Docker and select Linux as the container type.</span></p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;"><img alt="create-service-1" width="940" height="612" style="margin:0;width:940px;height:612px;border:none" src="create-service-1.png"/></p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;"><img alt="create-service-2" width="810" height="460" style="margin:0;width:810px;height:460px;border:none" src="create-service-2.png"/></p>
|
||||
<p style="line-height: 1.28; margin: 0 0 11px 0;"><img alt="create-service-3" width="753" height="473" style="margin:0;width:753px;height:473px;border:none" src="create-service-3.png"/></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">Visual Studio will create a default project. You can run it in Docker to make sure that the service works and can be accessed.</span></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">After testing, move on to the next step.</span></p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Prepare the project and upload it to Docker Hub</span></h2>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">To let the system download a Docker image, you need to place it in a Docker repository. In our example, we are going to use the <a href="https://hub.docker.com/" target="_blank" class="weblink">Docker Hub</a> public repository. To use it, you need to register an account.</span></p>
|
||||
<ol style="list-style-type:upper-roman">
|
||||
<li value="1" class="p_Normal">Выберите проект и нажмите на его название правой кнопкой мыши.</li><li value="2" class="p_Normal">Выберите <span style="font-weight: bold;">Добавить</span> — <span style="font-weight: bold;">Поддержка Docker</span> (в зависимости от целевой платформы). Дождитесь завершения настройки.</li><li value="3" class="p_Normal">Нажмите на название проекта правой кнопкой мыши.</li><li value="4" class="p_Normal">Выберите <span style="font-weight: bold;">Добавить</span> — <span style="font-weight: bold;">Поддержка оркестратора контейнеров... (Docker Compose)</span>. Дождитесь завершения настройки.</li><li value="5" class="p_Normal">Нажмите на название проекта правой кнопкой мыши.</li><li value="6" class="p_Normal">Выберите <span style="font-weight: bold;">Опубликовать</span> — <span style="font-weight: bold;">Реестр контейнеров Docker</span> — <span style="font-weight: bold;">Docker Hub</span>.</li></ol>
|
||||
<p class="p_Normal" style="text-indent: 19px; background: #ffffff; margin: 10px 0 0 0;"><img alt="service5" width="773" height="543" style="margin:0;width:773px;height:543px;border:none" src="service5.png"/></p>
|
||||
<p class="p_Normal" style="text-indent: 19px; background: #ffffff; margin: 10px 0 0 0;"><img alt="service6" width="618" height="430" style="margin:0;width:618px;height:430px;border:none" src="service6.png"/></p>
|
||||
<li value="1" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Select the project you need and right-click on its name.</span></li><li value="2" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Click </span><span style="font-family: Inter; font-weight: bold;">Add</span><span style="font-family: Inter;"> — </span><span style="font-family: Inter; font-weight: bold;">Docker Support…</span><span style="font-family: Inter;"> (depends on the target platform). Wait until the configuration is finished.</span></li><li value="3" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Right-click the project’s name.</span></li><li value="4" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Select </span><span style="font-family: Inter; font-weight: bold;">Add</span><span style="font-family: Inter;"> </span><span style="font-family: Inter; font-weight: bold;">—</span><span style="font-family: Inter;"> </span><span style="font-family: Inter; font-weight: bold;">Container Orchestrator Support…</span><span style="font-family: Inter;">, then choose </span><span style="font-family: Inter; font-weight: bold;">Docker Compose</span><span style="font-family: Inter;">. Wait until the configuration is finished.</span></li><li value="5" style="line-height: 1.28; margin-top: 0; margin-right: 0; margin-bottom: 11px;"><span style="font-family: Inter;">Right-click the project’s name.</span></li><li value="6" style="line-height: 1.20; margin-top: 7px; margin-right: 0; margin-bottom: 7px;"><span style="font-family: Inter;">Select </span><span style="font-family: Inter; font-weight: bold;">Publish — Docker Container Registry — Docker Hub</span><span style="font-family: Inter;">.</span></li></ol>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;"><img alt="create-service-4" width="787" height="547" style="margin:0;width:787px;height:547px;border:none" src="create-service-4.png"/></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 7px 0;"><img alt="create-service-5" width="792" height="437" style="margin:0;width:792px;height:437px;border:none" src="create-service-5.png"/></p>
|
||||
<ol style="list-style-type:upper-roman" start="7">
|
||||
<li value="7" style="line-height: 1.20; background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;"><span style="font-family: Inter;">Specify the login and password to Docker Hub and publish the project.</span></li></ol>
|
||||
<p style="line-height: 1.20; background: #ffffff; margin: 10px 0 0 0;"><img alt="create-service-6" width="655" height="396" style="margin:0;width:655px;height:396px;border:none" src="create-service-6.png"/></p>
|
||||
<ol style="list-style-type:upper-roman" start="8">
|
||||
<li value="8" style="line-height: 1.20; background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;"><span style="font-family: Inter;">When you click </span><span style="font-family: Inter; font-weight: bold;">Finish</span><span style="font-family: Inter;">, a page in Visual Studio will open. Here you can specify a tag for the image before publishing. You can use it to version the service.</span></li></ol>
|
||||
<p style="line-height: 1.20; background: #ffffff; margin: 10px 0 0 0;"><img alt="create-service-7" width="1004" height="523" style="margin:0;width:1004px;height:523px;border:none" src="create-service-7.png"/></p>
|
||||
<ol style="list-style-type:upper-roman" start="9">
|
||||
<li value="9" style="line-height: 1.20; background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;"><span style="font-family: Inter;">Click </span><span style="font-family: Inter; font-weight: bold;">Publish</span><span style="font-family: Inter;">. Visual Studio will build the Docker image and send it to the <a href="https://hub.docker.com" target="_blank" class="weblink">Docker Hub</a> repository.</span></li></ol>
|
||||
<p style="line-height: 1.20; background: #ffffff; margin: 10px 0 0 0;"><span style="font-family: Inter;">This public repository is used only as an example. Use private repositories for your services or create your own using <a href="https://docs.docker.com/registry/" target="_blank" class="weblink">docker-registry</a>.</span></p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Run and test custom service</span></h2>
|
||||
<ol style="list-style-type:upper-roman">
|
||||
<li value="7" class="p_Normal" style="background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;">Укажите логин и пароль от Docker Hub и опубликуйте проект. </li></ol>
|
||||
<p class="p_Normal" style="text-indent: 19px; background: #ffffff; margin: 10px 0 0 0;"><img alt="service7" width="697" height="484" style="margin:0;width:697px;height:484px;border:none" src="service7.png"/></p>
|
||||
<ol style="list-style-type:upper-roman">
|
||||
<li value="8" class="p_Normal" style="background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;">После нажатия на кнопку <span style="font-weight: bold;">Готово</span> открывается окно. Перед публикацией в нём можно указать тег для образа. С его помощью можно версионировать сервис.</li></ol>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><img alt="service8" width="993" height="533" style="margin:0;width:993px;height:533px;border:none" src="service8.png"/></p>
|
||||
<ol style="list-style-type:upper-roman">
|
||||
<li value="9" class="p_Normal" style="background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;">Нажмите <span style="font-weight: bold;">Опубликовать</span>. VS соберет Docker-образ и отправит его в хранилище <a href="https://hub.docker.com/" target="_blank" class="weblink">https://hub.docker.com/</a>.</li></ol>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;">Мы использовали публичное хранилище только в качестве примера. Для своих сервисов используйте приватные хранилища или создайте своё собственное с помощью<span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; color: #800000;"> </span><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; color: #800000;"><a href="https://docs.docker.com/registry/" class="weblink">docker-registry</a></span><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;">.</span></p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Запуск и проверка собственного сервиса</span></h2>
|
||||
<ol style="list-style-type:upper-roman">
|
||||
<li value="1" class="p_Normal" style="background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;">Создайте деплоймент для управления подом. Под запускает контейнер на основе предоставленного Docker-образа.</span></li></ol>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;">Для этого выполните команду: </span></p>
|
||||
<li value="1" class="p_Normal">Create a deployment for pod management. A pod runs a container based on the provided Docker image.</li></ol>
|
||||
<p class="p_Normal">To do that, run the following command:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl create deployment <microservice_name> --image=<image_name> -n <namespace></span></p>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;">Где:</span></p>
|
||||
<p class="p_Normal">Where:</p>
|
||||
<ul style="list-style-type:disc">
|
||||
<li class="p_Normal" style="background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; font-weight: bold;"><microservice_name></span><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;"> — название вашего сервиса;</span></li><li class="p_Normal" style="background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; font-weight: bold;"><image_name></span><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;"> — адрес, где хранится образ (username/repository:tag);</span></li><li class="p_Normal" style="background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; font-weight: bold;"><namespace></span><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;"> — пространство имён, где будет создан сервис.</span></li></ul>
|
||||
<li class="p_Normal"><span style="font-weight: bold;"><microservice_name></span> is the name of your service.</li><li class="p_Normal"><span style="font-weight: bold;"><image_name></span> is the address where the image is stored (username/repository:tag).</li><li class="p_Normal"><span style="font-weight: bold;"><namespace></span> is the namespace where the service will be created.</li></ul>
|
||||
<ol style="list-style-type:upper-roman">
|
||||
<li value="2" class="p_Normal" style="background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;">Создайте сервис для доступа к вашему сервису:</span></li></ol>
|
||||
<li value="2" class="p_Normal">Create a service to access your service:</li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl create service clusterip <microservice_name> --tcp=80:80 -n <namespace></span></p>
|
||||
<ol style="list-style-type:upper-roman">
|
||||
<li value="3" class="p_Normal" style="background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;">Убедитесь, что сервис появился в списке подов. Для этого выполните команду:</span></li></ol>
|
||||
<li value="3" class="p_Normal">Make sure the service has appeared in the pod list. To do that, run the following command:</li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl get pods -n <namespace></span></p>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;">Вы увидите список сервисов со статусами, добавленный вами сервис должен быть в статусе </span><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; font-weight: bold;">Running</span><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;">.</span></p>
|
||||
<p class="p_Normal">You will see a list of services with statuses. Your service should be in the <span style="font-weight: bold;">Running</span> status.</p>
|
||||
<ol style="list-style-type:upper-roman">
|
||||
<li value="4" class="p_Normal" style="background: #ffffff; margin-top: 10px; margin-right: 0; margin-bottom: 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;">Проверьте работу сервиса, запустив для примера контейнер с образом </span><code><b>curl</b></code><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;"> в Kubernetes-кластере:</span></li></ol>
|
||||
<li value="4" class="p_Normal">Test the service by running the <code><b>curl</b></code> image container in a Kubernetes cluster as an example:</li></ol>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl run -i curl --rm --image=curlimages/curl:latest -- curl http://</span><span class="f_CodeExample" style="font-weight: bold;"><microservice_name></span><span class="f_CodeExample">.</span><span class="f_CodeExample" style="font-weight: bold;"><namespace></span><span class="f_CodeExample">:80/api/State</span></p>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;">Если проверка прошла успешно и сервис отвечает, вы увидите следующее сообщение:</span></p>
|
||||
<p class="p_Normal">If the test is successful and the service responds, you will see the following message:</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">{"type":"GET","version":"47.0.200.1129"}</span></p>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;">После завершения проверки можно перейти к следующему шагу.</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Начало внимание</span></p>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif;">Для создания пользовательских микросервисов в ELMA365 вы также можете использовать функциональные возможности <a href="portable-microservices.html" class="topiclink">переносимых сервисов</a>.</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">Конец внимание</span></p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Пример использования сервиса через виджет</span></h2>
|
||||
<p class="p_Normal">Приведём пример использования сервиса. </p>
|
||||
<p class="p_Normal">Пишем клиентский код. При инициализации виджета будет выполнен серверный метод <code><b>WeatherForecast()</b></code>.</p>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; font-weight: bold; background-color: #ffffff;">Клиентский скрипт:</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">async function onInit(): Promise<void> {</span><br />
|
||||
<span class="f_CodeExample"> await Server.rpc.WeatherForecast();</span><br />
|
||||
<p class="p_Normal">After testing you can move on to the next step.</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">начало внимание</span></p>
|
||||
<p class="p_Normal">To create custom microservices in BRIX, you can also use the functionality of the <a href="portable-microservices.html" class="topiclink">portable services</a>.</p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">конец внимание</span></p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Example of using a service in a widget</span></h2>
|
||||
<p style="line-height: 1.20; background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: Inter;">Let’s see how a service can be used.</span></p>
|
||||
<p style="line-height: 1.20; background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: Inter;">We need to write a client-side script. When the widget is initialized, the server method </span><code><b>WeatherForecast()</b></code><span style="font-size: 15px; font-family: Inter;"> will be called.</span></p>
|
||||
<p style="line-height: 1.20; background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: Inter; font-weight: bold; background-color: #ffffff;">Client-side script:</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">async function onInit(): Promise<void> {</span><br />
|
||||
<span class="f_CodeExample"> await Server.rpc.WeatherForecast();</span><br />
|
||||
<span class="f_CodeExample">}</span></p>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; background-color: #ffffff;">Также пишем серверный скрипт. </span></p>
|
||||
<p class="p_Normal" style="background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; font-weight: bold; background-color: #ffffff;">Серверный скрипт:</span></p>
|
||||
<p style="line-height: 1.20; background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: Inter; background-color: #ffffff;">Now let’s write the script on the server side. </span></p>
|
||||
<p style="line-height: 1.20; background: #ffffff; margin: 10px 0 0 0;"><span style="font-size: 15px; font-family: Inter; font-weight: bold; background-color: #ffffff;">Server script:</span></p>
|
||||
<p class="p_CodeExample" style="white-space: normal; page-break-inside: auto; page-break-after: avoid;"><span class="f_CodeExample">async function WeatherForecast(): Promise<void> {</span><br />
|
||||
<span class="f_CodeExample"> Context.data.test = "debug";</span><br />
|
||||
<span class="f_CodeExample"> try {</span><br />
|
||||
@ -187,10 +185,10 @@
|
||||
<span class="f_CodeExample"> Context.data.test = typeof(error) === 'object' ? `error: ${JSON.stringify(error)}` : `${error}`;</span><br />
|
||||
<span class="f_CodeExample"> }</span><br />
|
||||
<span class="f_CodeExample">}</span></p>
|
||||
<p class="p_Normal">Добавим виджет на страницу и получим следующий результат:</p>
|
||||
<p style="line-height: 1.50; background: #ffffff;"><span style="font-size: 15px; font-family: Consolas;"> </span><img alt="service4" width="913" height="289" style="margin:0;width:913px;height:289px;border:none" src="service4.png"/></p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Удаление сервиса</span></h2>
|
||||
<p class="p_Normal"><span style="font-size: 15px; font-family: 'Segoe UI',Tahoma,Verdana,Arial,sans-serif; background-color: #ffffff;">Для удаления сервиса выполните следующую команду:</span></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-family: Inter;">Let’s add the widget to a page. The result will be the following:</span></p>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><img alt="create-service-8" width="1024" height="321" style="margin:0;width:1024px;height:321px;border:none" src="create-service-8.png"/></p>
|
||||
<h2 class="p_Heading2"><span class="f_Heading2">Delete a service</span></h2>
|
||||
<p style="line-height: 1.20; margin: 7px 0 16px 0;"><span style="font-size: 15px; font-family: Inter; color: #172b4d; background-color: #ffffff;">To delete the service, run the following command:</span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl delete deployment <microservice_name> -n <namespace></span></p>
|
||||
<p class="p_CodeExample" style="page-break-inside: avoid;"><span class="f_CodeExample">kubectl delete service <microservice_name> -n <namespace></span></p>
|
||||
|
||||
@ -209,7 +207,7 @@
|
||||
|
||||
</div>
|
||||
<!-- добавляет на страницу строку блок Была ли статья полезной? -->
|
||||
<div class="feedback-wrap"><div class="feedback" id="feedback"><span><b>Была ли статья полезной?</b></span><form action="" method="POST" class="feedback-form" id="feedback-form"><div class="feedback__popup feedback__popup-response" id="feedback__popup_thx">Спасибо за ваш отзыв!</div><div id="feedback-success-popup"><div class="wrap"><button type="button" class="feedback-popup-close">×</button><svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg"><g clip-path="url(#clip0_212_2187)"><path d="M22 0.6875C10.2294 0.6875 0.6875 10.2294 0.6875 22C0.6875 33.7706 10.2294 43.3125 22 43.3125C33.7706 43.3125 43.3125 33.7706 43.3125 22C43.3125 10.2294 33.7706 0.6875 22 0.6875ZM22 40.5625C11.8023 40.5625 3.4375 32.3078 3.4375 22C3.4375 11.8024 11.6922 3.4375 22 3.4375C32.1977 3.4375 40.5625 11.6922 40.5625 22C40.5625 32.1976 32.3078 40.5625 22 40.5625ZM34.1713 16.933L18.6613 32.3186C18.257 32.7197 17.604 32.7171 17.203 32.3128L9.82283 24.873C9.42176 24.4686 9.42434 23.8157 9.82867 23.4146L10.5609 22.6884C10.9652 22.2873 11.6181 22.2899 12.0192 22.6942L17.9468 28.6697L31.9926 14.7366C32.3969 14.3356 33.0498 14.3382 33.4509 14.7425L34.1772 15.4747C34.5783 15.879 34.5757 16.532 34.1713 16.933Z" fill="#27AE60"></path></g><defs><clipPath id="clip0_212_2187"><rect width="44" height="44" fill="white"></rect></clipPath></defs></svg><p>Ваш отзыв успешно отправлен!</p><span>Спасибо за обратную связь.</span></div></div><div class="feedback__popup" id="feedback__popup_why"><button type="button" class="feedback-popup-close">×</button><div class="feedback__popup-header">Уточните, почему:</div><input type="radio" name="category" id="bad_recommendation" value="bad_recommendation"><label for="bad_recommendation">Рекомендации не помогли</label><input type="radio" name="category" id="difficult_text" value="difficult_text"><label for="difficult_text">Текст трудно понять</label><input type="radio" name="category" id="no_answer" value="no_answer"><label for="no_answer">Нет ответа на мой вопрос</label><input type="radio" name="category" id="bad_header" value="bad_header"><label for="bad_header">Содержание статьи не соответствует заголовку</label><input type="radio" name="category" id="other_reason" value="other_reason"><label for="other_reason">Другая причина</label></div><div class="feedback__popup" id="feedback__popup-other"><button type="button" class="feedback-popup-close">×</button> <div class="feedback__popup-header">Расскажите, что вам не понравилось в статье:</div><textarea class="feedback__textarea" name="other" id=""></textarea><input type="submit" class="feedback__other-btn" value="Отправить"></div><div class="feedback-form__btn-group"><input type="radio" name="useful" id="feedback__useful_yes" value="true"><label for="feedback__useful_yes"><img src="like.svg"/><span class="feedback-form__btn-group_yes-btn">Да</span></label><input type="radio" name="useful" id="feedback__useful_no" value="false"><label for="feedback__useful_no"><img src="dislike.svg"/><span class="feedback-form__btn-group_no-btn">Нет</span></label></div><select name="category"><option disabled>Выберите вариант</option><option value="bad_recommendation" selected>Рекомендации не помогли</option><option value="difficult_text">Текст трудно понять</option><option value="no_answer">Нет ответа на мой вопрос</option><option value="bad_header">Содержание статьи не соответствует заголовку</option><option value="other_reason">Другая причина</option></select><input type="submit"></form></div></div>
|
||||
<div class="feedback" id="feedback"><div class="feedback-help"><span><b>Was this helpful?</b></span><form action="" method="POST" class="feedback-form" id="feedback-form"><div class="feedback__popup feedback__popup-response" id="feedback__popup_thx" style="display: none;">Thanks for your feedback!</div><div class="feedback__popup" id="feedback__popup_why" style="display: none;"><div class="feedback__popup-header">Please specify why:</div><input type="radio" name="category" id="bad_recommendation" value="bad_recommendation"><label for="bad_recommendation">Recommendations did not help me</label><input type="radio" name="category" id="difficult_text" value="difficult_text"><label for="difficult_text">Article is hard to understand</label><input type="radio" name="category" id="no_answer" value="no_answer"><label for="no_answer">Didn`t answer my question</label><input type="radio" name="category" id="bad_header" value="bad_header"><label for="bad_header">Content does not match the topic</label><input type="radio" name="category" id="other_reason" value="other_reason"><label for="other_reason">Other</label></div><div class="feedback__popup" id="feedback__popup-other" style="display: none;"><div class="feedback__popup-header">How we can improve it?</div><textarea class="feedback__textarea" name="other" id=""></textarea><input type="submit" class="feedback__other-btn" value="Submit"></div><div class="feedback-form__btn-group"><input type="radio" name="useful" id="feedback__useful_yes" value="true"><label for="feedback__useful_yes"><img src="like.svg" class="small-img" alt="like"><spanclass="feedback-form__btn-group_yes-btn">Yes</spanclass="feedback-form__btn-group_yes-btn"></label><input type="radio" name="useful" id="feedback__useful_no" value="false"><label for="feedback__useful_no"><img src="dislike.svg" class="small-img" alt="dislike"><spanclass="feedback-form__btn-group_no-btn">No</spanclass="feedback-form__btn-group_no-btn"></label></div><select name="category"><option disabled="">Please specify why</option><option value="bad_recommendation" selected="">Recommendations did not help me</option><option value="difficult_text">Article is hard to understand</option><option value="no_answer">Didn`t answer my question</option><option value="bad_header">Content does not match the topic</option><option value="other_reason">Other</option></select><input type="submit"></form></div><div class="found_typo"><p style="margin: 0px; margin-top: 16px !important;"><span><b>Found a typo?</b></span> Select it and press <i>Ctrl+Enter</i> to send us feedback</p></div></div>
|
||||
|
||||
</section>
|
||||
</div>
|
||||
@ -217,7 +215,7 @@
|
||||
<input type="checkbox" />
|
||||
<div class="article__arrow"></div>
|
||||
<div class="table-of-contents elma365-right" id="toc2Content">
|
||||
<h3 class="h3-toc">В этой статье</h3>
|
||||
<h3 class="h3-toc">In this topic</h3>
|
||||
<nav id="toc2"></nav>
|
||||
</div>
|
||||
</aside>
|
||||
@ -228,63 +226,30 @@
|
||||
<div class="footer-container">
|
||||
<div class="footer-mobile">
|
||||
|
||||
<ul class="footer-mobile__list"><li><a href="https://api.elma365.com/ru/" target="_blank">API</a></li><li><a href="https://tssdk.elma365.com/" target="_blank">TS SDK</a></li><li><a href="https://community.elma365.com/" target="_blank">Community</a></li><li><a href="https://elma-academy.com/ru/elma365" target="_blank">Академия</a></li></ul><ul class="footer-mobile__list"><li><a href="https://elma365.com/ru/help/platform/get-trial.html">Платформа</a></li><li><a href="https://elma365.com/ru/help/ecm/ecm-functions.html">ECM</a></li><li><a href="https://elma365.com/ru/help/service/service-functions.html">Service</a></li><li><a href="https://elma365.com/ru/help/projects/projects-functions.html">Проекты</a></li></ul>
|
||||
<ul class="footer-mobile__list"><li><a href="https://brix365.com/en/" target="_blank">BRIX</a></li><li><a href="https://tssdk.brix365.com/en/latest/" target="_blank">SDK</a></li><li><a href="https://api.brix365.com/en/" target="_blank">API</a></li></ul><ul class="footer-mobile__list"><li><a href="https://brix365.com/en/help/platform/get-trial.html">Platform</a></li><li><a href="https://brix365.com/en/help/ecm/ecm-functions.html">ECM</a></li><li><a href="https://brix365.com/en/help/service/service-functions.html">Service</a></li><li><a href="https://brix365.com/en/help/projects/projects-functions.html">Projects</a></li></ul>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="container">
|
||||
<div class="footer-wrap">
|
||||
|
||||
<div><span class="mobile-question-popup">Отправить фидбэк</span><form method="POST" action class="question__popup question-xs" id="question__popup"><div class="question-wrap"><span class="close"></span><span class="title">Задать вопрос</span><label for="help_question" style="display: none;"></label><textarea name="help_question" id="help_question"></textarea><input type="submit" value="Отправить"></div></form><div class="hidden fade-in question-success-xs">Ваш фидбэк отправлен.</div></div>
|
||||
|
||||
<div class="footer-flex-b">
|
||||
<div class="footer-top">
|
||||
<span class="footer-copy">© 2025
|
||||
ELMA365
|
||||
|
||||
|
||||
</span>
|
||||
|
||||
<a href="https://navigator.sk.ru/orn/1122971" target="_blank">
|
||||
<img src="sk-resident.svg" alt="sk icon" class="footer-img" width="117" height="34">
|
||||
</a>
|
||||
|
||||
</div>
|
||||
<div class="footer-line">
|
||||
|
||||
<div class="footer-line-copy">
|
||||
<span class="footer-copy">© 2025
|
||||
ELMA365
|
||||
|
||||
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<ul class="footer-list">
|
||||
|
||||
<li class="footer-item"><a href="https://elma365.com/ru/" target="_blank" class="footer-link" style="color: #0D4A75;"><img src="browse.svg" alt="browse icon" class="footer-img">elma365.com</a></li><li class="footer-item"><a href="https://www.youtube.com/user/ELMABPM" target="_blank" class="footer-link"><img src="yt.svg" alt="youtube icon" class="footer-img"></a></li><li class="footer-item"><a href="https://vk.com/elma_bpm" target="_blank" class="footer-link"><img src="vk.svg" alt="vk icon" class="footer-img"></a></li><li class="footer-item"><a href="https://t.me/elmaday" target="_blank" class="footer-link"><img src="tg.svg" alt="telegram icon" class="footer-img"></a></li><li class="footer-item"><a href="https://dzen.ru/elma" target="_blank" class="footer-link"><img src="dzen.svg" alt="dzen icon" class="footer-img"></a></li>
|
||||
|
||||
|
||||
<li class="footer-item">
|
||||
<a href="https://navigator.sk.ru/orn/1122971" target="_blank">
|
||||
<img src="sk-resident.svg" alt="sk icon" class="footer-img" width="117" height="34">
|
||||
</a>
|
||||
</li>
|
||||
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-wrap">
|
||||
|
||||
<div><span class="mobile-question-popup">Send feedback</span><form method="POST" action class="question__popup question-xs" id="question__popup"><div class="question-wrap"><span class="close"></span><span class="title">Ask a question</span><label for="help_question" style="display: none;"></label><textarea name="help_question" id="help_question"></textarea><input type="submit" value="Send"></div></form><div class="hidden fade-in question-success-xs">Sent</div></div>
|
||||
|
||||
<div class="footer-flex-b">
|
||||
<span class="footer-copy">© 2025 BRIX</span>
|
||||
<ul class="footer-list">
|
||||
|
||||
<li class="footer-item">
|
||||
<a href="#" class="arrow-top" style="display: block;"></a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<a href="#" class="arrow-top"></a>
|
||||
</div>
|
||||
|
||||
</footer>
|
||||
<!-- <script type="text/javascript" src="jquery1.min.js"></script>-->
|
||||
<iframe name="hmnavigation" style="display:none!important"></iframe>
|
||||
<!--<script src="./jquery-ui.js"></script> -->
|
||||
<script src="./jquery-ui.min.js"></script>
|
||||
<script src="./jquery-ui.js"></script>
|
||||
<!--script src="//cdn.jsdelivr.net/npm/featherlight@1.7.14/release/featherlight.min.js" type="text/javascript" charset="utf-8"></script-->
|
||||
<script src="./jquery.tocify.min.js"></script>
|
||||
<script src="./TypoReporter.min.js"></script>
|
||||
|
Reference in New Issue
Block a user