Files

759 lines
462 KiB
HTML
Raw Permalink Normal View History

2026-05-07 19:20:10 +05:00
<!DOCTYPE html>
<html dir="ltr" lang="ru" xml:lang="ru">
<head>
<title>RG25: Развертывание приложений в Docker (Развертывание Python-скрипта в Docker) | sysahelper</title>
<link href="https://sysahelper.ru/pluginfile.php/1/theme_moove/favicon/1703880572/22212monkey_98814.ico" rel="shortcut icon"/>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<meta content="moodle, RG25: Развертывание приложений в Docker (Развертывание Python-скрипта в Docker) | sysahelper" name="keywords"/>
<link href="https://sysahelper.ru/theme/yui_combo.php?rollup/3.18.1/yui-moodlesimple-min.css" rel="stylesheet" type="text/css"/><script id="firstthemesheet" type="text/css">/** Required in order to fix style inclusion problems in IE with YUI **/</script><link href="https://sysahelper.ru/theme/styles.php/moove/1703880572_1/all" rel="stylesheet" type="text/css"/>
<script>
//<![CDATA[
var M = {}; M.yui = {};
M.pageloadstarttime = new Date();
M.cfg = {"wwwroot":"https:\/\/sysahelper.ru","homeurl":{},"sesskey":"I78ejZljGV","sessiontimeout":"28800","sessiontimeoutwarning":"1200","themerev":"1703880572","slasharguments":1,"theme":"moove","iconsystemmodule":"core\/icon_system_fontawesome","jsrev":"1703880200","admin":"admin","svgicons":true,"usertimezone":"\u0415\u0432\u0440\u043e\u043f\u0430\/\u041c\u043e\u0441\u043a\u0432\u0430","language":"ru","courseId":35,"courseContextId":808,"contextid":931,"contextInstanceId":566,"langrev":1703880200,"templaterev":"1703880200"};var yui1ConfigFn = function(me) {if(/-skin|reset|fonts|grids|base/.test(me.name)){me.type='css';me.path=me.path.replace(/\.js/,'.css');me.path=me.path.replace(/\/yui2-skin/,'/assets/skins/sam/yui2-skin')}};
var yui2ConfigFn = function(me) {var parts=me.name.replace(/^moodle-/,'').split('-'),component=parts.shift(),module=parts[0],min='-min';if(/-(skin|core)$/.test(me.name)){parts.pop();me.type='css';min=''}
if(module){var filename=parts.join('-');me.path=component+'/'+module+'/'+filename+min+'.'+me.type}else{me.path=component+'/'+component+'.'+me.type}};
YUI_config = {"debug":false,"base":"https:\/\/sysahelper.ru\/lib\/yuilib\/3.18.1\/","comboBase":"https:\/\/sysahelper.ru\/theme\/yui_combo.php?","combine":true,"filter":null,"insertBefore":"firstthemesheet","groups":{"yui2":{"base":"https:\/\/sysahelper.ru\/lib\/yuilib\/2in3\/2.9.0\/build\/","comboBase":"https:\/\/sysahelper.ru\/theme\/yui_combo.php?","combine":true,"ext":false,"root":"2in3\/2.9.0\/build\/","patterns":{"yui2-":{"group":"yui2","configFn":yui1ConfigFn}}},"moodle":{"name":"moodle","base":"https:\/\/sysahelper.ru\/theme\/yui_combo.php?m\/1703880200\/","combine":true,"comboBase":"https:\/\/sysahelper.ru\/theme\/yui_combo.php?","ext":false,"root":"m\/1703880200\/","patterns":{"moodle-":{"group":"moodle","configFn":yui2ConfigFn}},"filter":null,"modules":{"moodle-core-blocks":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification"]},"moodle-core-actionmenu":{"requires":["base","event","node-event-simulate"]},"moodle-core-notification":{"requires":["moodle-core-notification-dialogue","moodle-core-notification-alert","moodle-core-notification-confirm","moodle-core-notification-exception","moodle-core-notification-ajaxexception"]},"moodle-core-notification-dialogue":{"requires":["base","node","panel","escape","event-key","dd-plugin","moodle-core-widget-focusafterclose","moodle-core-lockscroll"]},"moodle-core-notification-alert":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-confirm":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-exception":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-notification-ajaxexception":{"requires":["moodle-core-notification-dialogue"]},"moodle-core-lockscroll":{"requires":["plugin","base-build"]},"moodle-core-event":{"requires":["event-custom"]},"moodle-core-chooserdialogue":{"requires":["base","panel","moodle-core-notification"]},"moodle-core-maintenancemodetimer":{"requires":["base","node"]},"moodle-core-handlebars":{"condition":{"trigger":"handlebars","when":"after"}},"moodle-core-formchangechecker":{"requires":["base","event-focus","moodle-core-event"]},"moodle-core-dragdrop":{"requires":["base","node","io","dom","dd","event-key","event-focus","moodle-core-notification"]},"moodle-core_availability-form":{"requires":["base","node","event","event-delegate","panel","moodle-core-notification-dialogue","json"]},"moodle-backup-backupselectall":{"requires":["node","event","node-event-simulate","anim"]},"moodle-course-util":{"requires":["node"],"use":["moodle-course-util-base"],"submodules":{"moodle-course-util-base":{},"moodle-course-util-section":{"requires":["node","moodle-course-util-base"]},"moodle-course-util-cm":{"requires":["node","moodle-course-util-base"]}}},"moodle-course-management":{"requires":["base","node","io-base","moodle-core-notification-exception","json-parse","dd-constrain","dd-proxy","dd-drop","dd-delegate","node-event-delegate"]},"moodle-course-categoryexpander":{"requires":["node","event-key"]},"moodle-course-dragdrop":{"requires":["base","node","io","dom","dd","dd-scroll","moodle-core-dragdrop","moodle-core-notification","moodle-course-coursebase","moodle-course-util"]},"moodle-form-dateselector":{"requires":["base","node","overlay","calendar"]},"moodle-form-shortforms":{"requires":["node","base","selector-css3","moodle-core-event"]},"moodle-question-searchform":{"requires":["base","node"]},"moodle-question-preview":{"requires":["base","dom","event-delegate","event-key","core_question_engine"]},"moodle-question-chooser":{"requires":["moodle-core-chooserdialogue"]},"moodle-availability_completion-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_date-form":{"requires":["base","node","event","io","moodle-core_availability-form"]},"moodle-availability_grade-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_group-form":{"requires":["base","node","event","moodle-core_availability-form"]},"moodle-availability_grouping-form":{"requires":["base","node","event"
M.yui.loader = {modules: {}};
//]]>
</script>
<link href="https://fonts.googleapis.com" rel="preconnect"/>
<link crossorigin="" href="https://fonts.gstatic.com" rel="preconnect"/>
<link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,300;0,400;0,500;0,700;1,400&amp;display=swap" rel="stylesheet"/>
<meta content="width=device-width, initial-scale=1.0" name="viewport"/>
</head>
<body class="format-topics limitedwidth path-mod path-mod-page chrome dir-ltr lang-ru yui-skin-sam yui3-skin-sam sysahelper-ru pagelayout-incourse course-35 context-931 cmid-566 cm-type-page category-6 theme uses-drawers drawer-open-index" id="page-mod-page-view">
<div class="fixed-top" id="accessibilitybar">
<div class="container-fluid">
<div class="bars">
<div class="fontsize">
<span>Размер шрифта</span>
<ul>
<li><a class="btn btn-default" data-action="decrease" id="fontsize_dec" title="Уменьшить размер шрифта">A-</a></li>
<li><a class="btn btn-default" data-action="reset" id="fontsize_reset" title="Сбросить размер шрифта">A</a></li>
<li><a class="btn btn-default" data-action="increase" id="fontsize_inc" title="Увеличить размер шрифта">A+</a></li>
</ul>
</div>
<div class="sitecolor">
<span>Цвет сайта</span>
<ul>
<li><a class="btn btn-default" data-action="reset" id="sitecolor_color1" title="Сбросить цвет сайта">R</a></li>
<li><a class="btn btn-default" data-action="sitecolor-color-2" id="sitecolor_color2" title="Низкий контраст 1">A</a></li>
<li><a class="btn btn-default" data-action="sitecolor-color-3" id="sitecolor_color3" title="Низкий контраст 2">A</a></li>
<li><a class="btn btn-default" data-action="sitecolor-color-4" id="sitecolor_color4" title="Высокий контраст">A</a></li>
</ul>
</div>
</div>
</div>
</div>
<div aria-live="polite" class="toast-wrapper mx-auto py-0 fixed-top" role="status"></div>
<div class="d-print-block" id="page-wrapper">
<div>
<a class="sr-only sr-only-focusable" href="#maincontent">Перейти к основному содержанию</a>
</div><script src="https://sysahelper.ru/lib/javascript.php/1703880200/lib/polyfills/polyfill.js"></script>
<script src="https://sysahelper.ru/theme/yui_combo.php?rollup/3.18.1/yui-moodlesimple-min.js"></script><script src="https://sysahelper.ru/lib/javascript.php/1703880200/lib/javascript-static.js"></script>
<script>
//<![CDATA[
document.body.className += ' jsenabled';
//]]>
</script>
<nav aria-label="Навигация по сайту" class="navbar fixed-top navbar-light bg-white navbar-expand shadow">
<button class="navbar-toggler aabtn d-block d-md-none px-1 my-1 border-0" data-action="toggle" data-target="theme_moove-drawers-primary" data-toggler="drawers">
<span class="navbar-toggler-icon"></span>
<span class="sr-only">Боковая панель</span>
</button>
<a class="navbar-brand d-none d-md-flex align-items-center m-0 mr-4 p-0 aabtn" href="https://sysahelper.ru/">
<img alt="sysahelper" class="logo mr-1" src="data:image/jpeg;base64,/9j/4QAYRXhpZgAASUkqAAgAAAAAAAAAAAAAAP/sABFEdWNreQABAAQAAAA8AAD/4QMvaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLwA8P3hwYWNrZXQgYmVnaW49Iu+7vyIgaWQ9Ilc1TTBNcENlaGlIenJlU3pOVGN6a2M5ZCI/PiA8eDp4bXBtZXRhIHhtbG5zOng9ImFkb2JlOm5zOm1ldGEvIiB4OnhtcHRrPSJBZG9iZSBYTVAgQ29yZSA1LjYtYzE0NSA3OS4xNjM0OTksIDIwMTgvMDgvMTMtMTY6NDA6MjIgICAgICAgICI+IDxyZGY6UkRGIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyI+IDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiIHhtbG5zOnhtcD0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bXA6Q3JlYXRvclRvb2w9IkFkb2JlIFBob3Rvc2hvcCBDQyAyMDE5IChXaW5kb3dzKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDozRkM2MUVGMjFDQTcxMUVBQjY4QUQ0ODQ0QTJCNzg3NyIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDozRkM2MUVGMzFDQTcxMUVBQjY4QUQ0ODQ0QTJCNzg3NyI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjNGQzYxRUYwMUNBNzExRUFCNjhBRDQ4NDRBMkI3ODc3IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjNGQzYxRUYxMUNBNzExRUFCNjhBRDQ4NDRBMkI3ODc3Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJ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
</a>
<div class="primary-navigation">
<nav class="moremenu navigation">
<ul class="nav more-nav navbar-nav" id="moremenu-69fc966751614-navbar-nav" role="menubar">
<li class="nav-item" data-forceintomoremenu="false" data-key="home" role="none">
<a class="nav-link" href="https://sysahelper.ru/" role="menuitem" tabindex="-1">
В начало
</a>
</li>
<li class="nav-item dropdown dropdownmoremenu d-none" data-region="morebutton" role="none">
<a aria-expanded="false" aria-haspopup="true" class="dropdown-toggle nav-link" data-toggle="dropdown" href="#" id="moremenu-dropdown-69fc966751614" role="menuitem" tabindex="-1">
Дополнительно
</a>
<ul aria-labelledby="moremenu-dropdown-69fc966751614" class="dropdown-menu dropdown-menu-left" data-region="moredropdown" role="menu">
</ul>
</li>
</ul>
</nav>
</div>
<ul class="navbar-nav d-none d-md-flex my-1 px-1">
<!-- page_heading_menu -->
</ul>
<div class="navbar-nav ml-auto" id="usernavigation">
<div class="navbarcallbacks">
</div>
<div class="simplesearchform" id="searchinput-navbar-69fc9667532f369fc966751d053">
<div class="collapse" id="searchform-navbar">
<form accept-charset="utf-8" action="https://sysahelper.ru/search/index.php" autocomplete="off" class="mform form-inline searchform-navbar" method="get">
<input name="context" type="hidden" value="931"/>
<div class="input-group">
<label for="searchinput-69fc9667532f369fc966751d053">
<span class="sr-only">Найти</span>
</label>
<input aria-label="Найти" autocomplete="off" class="form-control withclear" data-region="input" id="searchinput-69fc9667532f369fc966751d053" name="q" placeholder="Найти" type="text"/>
<a class="btn btn-close" data-action="closesearch" data-toggle="collapse" href="#searchform-navbar" role="button">
<i aria-hidden="true" class="icon fa fa-times fa-fw"></i>
<span class="sr-only">Закрыть</span>
</a>
<div class="input-group-append">
<button class="btn btn-submit" data-action="submit" type="submit">
<i aria-hidden="true" class="icon fa fa-search fa-fw"></i>
<span class="sr-only">Найти</span>
</button>
</div>
</div>
</form>
</div>
<a aria-controls="searchform-navbar" aria-expanded="false" class="btn btn-open rounded-0 nav-link" data-action="opensearch" data-toggle="collapse" href="#searchform-navbar" role="button" title="Изменить данные поисковой строки">
<i aria-hidden="true" class="icon fa fa-search fa-fw"></i>
<span class="sr-only">Изменить данные поисковой строки</span>
</a>
</div>
<div class="divider border-left h-75 align-self-center mx-1"></div>
<div class="langmenu">
<div class="dropdown show">
<a aria-controls="lang-action-menu" aria-haspopup="true" aria-label="Язык" class="btn dropdown-toggle" data-toggle="dropdown" href="#" id="lang-menu-toggle" role="button">
<i aria-hidden="true" class="icon fa fa-language fa-fw mr-1"></i>
<span class="langbutton">
Русский (ru)
</span>
<b class="caret"></b>
</a>
<div aria-labelledby="lang-menu-toggle" class="dropdown-menu dropdown-menu-right" id="lang-action-menu" role="menu">
<a aria-current="true" class="dropdown-item pl-5" href="#" role="menuitem">
Русский (ru)
</a>
<a class="dropdown-item pl-5" href="https://sysahelper.ru/mod/page/view.php?id=566&amp;lang=en" role="menuitem">
English (en)
</a>
</div>
</div>
</div>
<div class="divider border-left h-75 align-self-center mx-1"></div>
<div class="d-flex align-items-stretch usermenu-container" data-region="usermenu">
<div class="usermenu">
<span class="login pl-2">
Вы используете гостевой доступ
<div class="divider border-left h-75 align-self-center mx-2"></div>
<a href="https://sysahelper.ru/login/index.php">Вход</a>
</span>
</div>
</div>
</div>
</nav>
<div class="drawer drawer-left drawer-primary d-print-none not-initialized" data-close-on-resize="1" data-forceopen="0" data-preference="" data-region="fixed-drawer" data-state="show-drawer-primary" id="theme_moove-drawers-primary">
<div class="drawerheader">
<button class="btn drawertoggle icon-no-margin hidden" data-action="closedrawer" data-placement="right" data-target="theme_moove-drawers-primary" data-toggle="tooltip" data-toggler="drawers" title="Закрыть панель">
<i aria-hidden="true" class="icon fa fa-times fa-fw"></i>
</button>
<div class="drawerheadercontent hidden">
</div>
</div>
<div class="drawercontent drag-container" data-usertour="scroller">
<div class="list-group">
<a class="list-group-item list-group-item-action" href="https://sysahelper.ru/">
В начало
</a>
</div>
</div>
</div>
<div class="drawer drawer-left show d-print-none not-initialized" data-close-on-resize="0" data-forceopen="0" data-preference="drawer-open-index" data-region="fixed-drawer" data-state="show-drawer-left" id="theme_boost-drawers-courseindex">
<div class="drawerheader">
<button class="btn drawertoggle icon-no-margin hidden" data-action="closedrawer" data-placement="right" data-target="theme_boost-drawers-courseindex" data-toggle="tooltip" data-toggler="drawers" title="Закрыть оглавление курса">
<i aria-hidden="true" class="icon fa fa-times fa-fw"></i>
</button>
<div class="drawerheadercontent hidden">
</div>
</div>
<div class="drawercontent drag-container" data-usertour="scroller">
<nav class="courseindex" id="courseindex">
<div id="courseindex-content">
<div aria-hidden="true" data-region="loading-placeholder-content" id="course-index-placeholder">
<ul class="media-list">
<li class="media">
<div class="media-body col-md-6 p-0 d-flex align-items-center">
<div class="bg-pulse-grey rounded-circle mr-2"></div>
<div class="bg-pulse-grey w-100"></div>
</div>
</li>
<li class="media">
<div class="media-body col-md-6 p-0 d-flex align-items-center">
<div class="bg-pulse-grey rounded-circle mr-2"></div>
<div class="bg-pulse-grey w-100"></div>
</div>
</li>
<li class="media">
<div class="media-body col-md-6 p-0 d-flex align-items-center">
<div class="bg-pulse-grey rounded-circle mr-2"></div>
<div class="bg-pulse-grey w-100"></div>
</div>
</li>
<li class="media">
<div class="media-body col-md-6 p-0 d-flex align-items-center">
<div class="bg-pulse-grey rounded-circle mr-2"></div>
<div class="bg-pulse-grey w-100"></div>
</div>
</li>
</ul>
</div>
</div>
</nav>
</div>
</div>
<div class="drawers show-drawer-left drag-container" data-region="mainpage" data-usertour="scroller" id="page">
<header class="moove-container-fluid" id="page-header">
<div class="d-flex flex-wrap">
<div class="ml-auto d-flex">
</div>
<div id="course-header">
</div>
</div>
<div class="d-sm-flex align-items-center">
<div class="mr-auto">
<div class="page-context-header"><div class="page-header-image mr-2"><div class="content activityiconcontainer icon-size-6 modicon_page"><img alt="" aria-hidden="true" class="icon activityicon" src="data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDI1LjIuMSwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPgo8c3ZnIHdpZHRoPSIyNHB4IiBoZWlnaHQ9IjI0cHgiIHZlcnNpb249IjEuMSIgaWQ9IkxheWVyXzEiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHg9IjBweCIgeT0iMHB4IgoJIHZpZXdCb3g9IjAgMCA3NC40IDc0LjQiIHN0eWxlPSJlbmFibGUtYmFja2dyb3VuZDpuZXcgMCAwIDc0LjQgNzQuNDsiIHhtbDpzcGFjZT0icHJlc2VydmUiIHByZXNlcnZlQXNwZWN0UmF0aW89InhNaW5ZTWlkIG1lZXQiPgo8Zz4KCTxwYXRoIGQ9Ik02Ni41LDE1LjFMNTIuNCwxYy0wLjctMC43LTEuNi0xLTIuNi0xSDEwLjNDOC4yLDAsNi42LDEuNiw2LjYsMy43bDAsMHY2N2MwLDIuMSwxLjYsMy43LDMuNywzLjdsMCwwSDY0CgkJYzIuMSwwLDMuNy0xLjYsMy43LTMuN2wwLDBWMTcuOEM2Ny41LDE2LjgsNjcuMiwxNS44LDY2LjUsMTUuMXogTTQ4LjQsNi43bDEyLjUsMTIuNUg0OC40VjYuN3ogTTExLjksNjkuMlY1aDMwLjl2MTUuNgoJCWMwLDIuMiwxLjcsMy44LDMuOCwzLjhoMTUuNnY0NC43TDExLjksNjkuMkwxMS45LDY5LjJ6Ii8+Cgk8cGF0aCBkPSJNNTQuMyw0M0gxOS43Yy0xLjQsMC0yLjYsMS4yLTIuNiwyLjZzMS4yLDIuNiwyLjYsMi42aDM0LjZjMS40LDAsMi42LTEuMiwyLjYtMi42QzU3LDQ0LjIsNTUuOCw0Myw1NC4zLDQzeiIvPgoJPHBhdGggZD0iTTU0LjMsNTMuNUgxOS43Yy0xLjQsMC0yLjYsMS4yLTIuNiwyLjZzMS4yLDIuNiwyLjYsMi42aDM0LjZjMS40LDAsMi42LTEuMiwyLjYtMi42UzU1LjgsNTMuNSw1NC4zLDUzLjV6Ii8+Cgk8cGF0aCBkPSJNMTkuOCwzNy44aDIwLjljMS40LDAsMi42LTEuMiwyLjYtMi42YzAtMS40LTEuMi0yLjYtMi42LTIuNkgxOS44Yy0xLjQsMC0yLjYsMS4yLTIuNiwyLjZTMTguNCwzNy44LDE5LjgsMzcuOHoiLz4KPC9nPgo8L3N2Zz4K"/></div></div><div class="page-header-headings"><h1 class="h2">Развертывание приложений в Docker (Развертывание Python-скрипта в Docker)</h1></div></div>
</div>
<div class="header-actions-container ml-auto" data-region="header-actions-container">
</div>
<div class="d-none d-md-block" id="page-navbar">
<nav aria-label="Панель навигации">
<ol class="breadcrumb">
<li class="breadcrumb-item">
<a href="https://sysahelper.ru/course/view.php?id=35#section-3" title="REGION2025">RG25</a>
</li>
<li class="breadcrumb-item"><span>Развертывание приложений в Docker (Развертывание Python-скрипта в Docker)</span></li>
</ol>
</nav>
</div>
</div>
</header>
<div class="main-inner" id="topofscroll">
<div class="drawer-toggles d-flex">
<div class="drawer-toggler drawer-left-toggle open-nav d-print-none">
<button class="btn icon-no-margin" data-action="toggle" data-placement="right" data-target="theme_boost-drawers-courseindex" data-toggle="tooltip" data-toggler="drawers" title="Открыть оглавление курса">
<span class="sr-only">Открыть оглавление курса</span>
<i aria-hidden="true" class="icon fa fa-list fa-fw"></i>
</button>
</div>
</div>
<div class="d-print-block" id="page-content">
<div id="region-main-box">
<section aria-label="Содержимое" id="region-main">
<span class="notifications" id="user-notifications"></span>
<span id="maincontent"></span>
<div class="activity-header" data-for="page-activity-header">
<span class="sr-only">Требуемые условия завершения</span>
<div class="activity-information" data-activityname="Развертывание приложений в Docker (Развертывание Python-скрипта в Docker)" data-region="activity-information">
</div>
</div>
<div role="main"><div class="box py-3 generalbox center clearfix"><div class="no-overflow"><h3 align="justify"><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">Задание:</span></span></span></h3>
<p align="justify"><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">4) Развертывание приложений в Docker</span></span></span></p>
<ul>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">a) Общие требования:</span></span></span>
<ul>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">Все действия выполняются на машине ControlVM. Выполнить развертывание Python-скрипта в Docker, настроить WordPress с использованием Docker Compose и развернуть базовый стек ELK для сбора и отображения логов.</span></span></span></li>
</ul>
</li>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">b) Развертывание Python-скрипта в Docker</span></span></span>
<ul>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">1. Напишите Python-скрипт 'py.py' в домашней директории пользователя <s>py.py</s>, который выполняет следующие задачи:</span></span></span>
<ul>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;"><span lang="en-US">i</span></span></span><span style="color: #000000;"><span style="font-size: large;">. Проверяет наличие файла input.txt в рабочей директории root.</span></span></span></li>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;"><span lang="en-US">ii</span></span></span><span style="color: #000000;"><span style="font-size: large;">. Выводит сообщение с содержимым.</span></span></span></li>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;"><span lang="en-US">iii</span></span></span><span style="color: #000000;"><span style="font-size: large;">. Если файла input.txt нет, выводит сообщение об ошибке.</span></span></span></li>
</ul>
</li>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">2. Создайте Dockerfile для Python-скрипта 'py.py' <s>file-copy-python </s>: </span></span></span>
<ul>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;"><span lang="en-US">i</span></span></span><span style="color: #000000;"><span style="font-size: large;">. Используйте базовый образ python:3.8-alpine.</span></span></span></li>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;"><span lang="en-US">ii</span></span></span><span style="color: #000000;"><span style="font-size: large;">. Python-скрипт py.py должен выполняться внутри контейнера.</span></span></span></li>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;"><span lang="en-US">iii</span></span></span><span style="color: #000000;"><span style="font-size: large;">. Реализуйте копирование файла input.txt в контейнер (этот файл может содержать произвольный текст).</span></span></span></li>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;"><span lang="en-US">iv</span></span></span><span style="color: #000000;"><span style="font-size: large;">. Контейнер при запуске должен выводит содержимое файла input.txt, после чего завершать свою работу.</span></span></span></li>
</ul>
</li>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">3. Сборка и запуск контейнера:</span></span></span>
<ul>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;"><span lang="en-US">i</span></span></span><span style="color: #000000;"><span style="font-size: large;">. Соберите Docker-образ с именем file-copy-python<s>.yml</s>.</span></span></span></li>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;"><span lang="en-US">ii</span></span></span><span style="color: #000000;"><span style="font-size: large;">. Запустите контейнер и убедитесь, что содержимое файла выводится файл input.txt.</span></span></span></li>
</ul>
</li>
</ul>
</li>
</ul>
<h3><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">Вариант реализации:</span></span></span></h3>
<h3><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">ControlVM:</span></span></span></h3>
<ul>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">В домашней директории пользователя <strong>altlinux</strong> из под пользователя <strong>altlinux</strong> создаём файл <strong>py.py</strong>:</span></span></span></li>
</ul>
<pre class="language-markup"><code>vim ~/py.py</code></pre>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Помещаем в него следующее содержимое:
<ul>
<li>Реализуем функционал согласно требованиям задания:</li>
</ul>
</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>import os
def main():
working_directory = os.path.expanduser("/root")
file_path = os.path.join(working_directory, "input.txt")
if os.path.exists(file_path):
with open(file_path, "r", encoding="utf-8") as file:
content = file.read()
print(content)
else:
print("Ошибка: файл input.txt не найден в директории /root.")
if __name__ == "__main__":
main()</code></pre>
<ul>
<li>Проверяем функционал скрипта:
<ul>
<li>Вывод об ошибке в случае отсутствия файла:</li>
</ul>
</li>
</ul>
<p><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAdcAAABeCAYAAABxTF5lAAAABHNCSVQICAgIfAhkiAAAIABJREFUeF7tfQ9QlNeW549uuhGaPCCjYBKiCzqDZoZMBl6lsJ6QKjGbkORJxSGVN64ZNSmcRLIZrRhmHawxZnV4Q5LSch4mI2XUikXFCusrec5DK8FZIVuyb6vdjGzFsIMwGhIVXMEnf7vp7v3d7ga66f7+NN20mL630pG+97vnnvu7t79zz7nn3hO3cOFCF2SSCEgEJAISAYmARCBiCBgiRkkSkghIBCQCEgGJgETAjYAUrnIiSAQkAhIBiYBEIMIISOEaYUAlOYmAREAiIBGQCMyKcHXOT4bnkzgjhMOtP6NGZaVJBO4l/q6U5DkzEq4U85zh5X5hxJKafr+wKvmUCMwqAsbk5OR3A1owPYjx55bC8UcZcIrPg2Mw9owFPBY0IyULtu0/g/3nfwr7moWIa/k3GIeDPhk8U2/9RfkY2fczuP7PNzD2Byc1m7nOx7Mw/gSxWWAiNoOz2VR0aevFf5a4sv/yZdjQBdMVm3oLYYy/45lcOJZ753aGC8ZrQSbo/Mcw+ndZMJ3tUecjCqWFVSexf/UPOPHfr0WhtfCaKK/9FK+Y/wVN3wyFR0ildk5hGda+8B9R9LM85KSN4l87e1WeDrPIkoPi0ieR/EMnekfDpHUfV48n7877mP97wXpwzTVpAcZ/8QTsf/ognIv5CWUFf6cbCVW/RlJNB+JU3o/jFc/DtiRIl3XWx61riD/7NcxXgtCYzayURzC292WMrs2C82FiU7gCw/uehv0h42y2GkBbEb+AJ0PM0It/iGQj/ngY4+8S48Z57ViRC9vPFwWw5ix4EqNvPsaFUxaG9z6L0U05Ac/EekZh5QcovwewrPngJKo3FyGTBg4bMlCwoRqfVZfM2nCkF5ejoiQT7QOz1sScJSyEQ5HNho8HBvBndvuc5XOuMiYWJMETQTX+5jwSLgUvDivX9Ag1h0TEnQmDynAfTCf6wiAws6r2bSvhvPQFkk7cniTgLFzFl/ETMFVZZ0Y01FqRwC/UNufa82GMf/yR83CvxF9Yg5Ei/465Cp7C6OYHYTzbB8N8M+LPfA/X8ugunOYa1AH8mPKwIjcNg6cCSmY9o3n/22js6Z5sx5S3FZ+8twYbsppwbCo7YnyUlmajq6kmYvTuB0IPORz489FR/OXwMB7l3/9kseB/mUz3A+tzikdl4arApmsRzb4v06y2NAUuCxDXd5tC+AISzk0JG4Wq7mx7xdMYX7wAztQEYFsZxt0LIgeMR36tT5AnZWHs3Xw43GN9B6aaL2C6PtWivep5uJq/BgqfxPjyVLjsd2GwWpF4yPPLs1e9CEfLGcxrHZms5Nj0IlfBF5B45Abs77yI8ev8+/iNyXJ33q0LmGddCntSp1uwOpfnYLxwAVzDd2C80A4TnsLYcisSLgMejJ7gAoLtm8c9GB0/hwSrp03HC0/B9uwjxMCIuB9uIP7EBZitHtOyJv9a+KUsxWjlApj2dcO5aQXsXgyMx0WfPW2otT+FZJC/ltAU/1fJSKw871foenwFRtcbMe+EA6OP30b8fGqEywEhxIzLV2KsIBGGc+f8MA1CfSprwULYqp7A+JIHiG8v4k9+xfl1x1Me5virtstC5/KFcF2hRaTZiNGCFJhavwFatWr5l+dt2I3y1bl4NM0M2+BN9HS04GjNMVykpbSs+iPktOzA3qYpVShvy0coRx3eOHjRTahgSzXKi3KQYR5CV1s9Wjg7fVPehipsXJ2P7DRg8Lt2NB+rRV2bPtPohuoPYP5tA/BcOYpzMmAe6kJb/T7UNHXDlLMB1Vsz0bxrL5p8yJkKtuDDDWbUb9+P9IpqrM7KQmZaMmw7DyPfzZoN7XVvYX+bR7uxpeWjfPcaFOc+imRbP75tO4rt+5snu6DGf1n1AaT9th621RtQEqT+kI9gFQTtQ0PT0PGDKqwvpoJKFFnaccgHjHDxa9Owls82fSVAzC4Xnhkbw3oK1EIqVnHeBzvj4/HL5LnjB6HE/1zMD24WVuE0btgBw7VvkFDTiMStjUhoo2h8dSXNoiqVfIqEIEn4pw6eAbrLly9f+HvF5wt9glXQGabZubIB8458j7gFyXBNW1C55qfDvvlJapcUhpWfU6h+z7fVSoyu8jhXuehs5Ury10SEE82E6Tv+JPe1VlEgPO5xZnG8vAa2xbfdgteZzz1kayc1GQqTiqVAJzXn5TSf/5SYXHbAuYSTcH4OxqpWcrlwDeb3TyHxb8/AfLITxqseweokvdFnE919d+PXbMN4xbMUzB6etPjXxM9khuuhRbBtyycGFPZ7TxOrr2Hq9AhWrfZVR/Ha9zAkLcLIM/4/Nscqmsj7iLOJOBbmwHXuC8w7x35tWoXxOxwHjpVr1WOqpKcK4z00ms9x/E5i3m9snF9PT+IT7vhrMWHovI24JVxE5adoPRq03FJYhcoSC9r2vY1XX30Vb+89ii+tXW7BKlJ6egYyLP6OUpYM5qVxpcqUWXYAlUUWWGtZ//W/Q31/MUpXTOGdteEAdq5O9pS/+jaFog0FldXYmuep72lF6f+5sKQvQ0lFGUy/rcH211/HnlP9yK3Yyfom2DuOocOcjzU0g/qmgpIipPe2QwiGlqP7sOdgM3rQj4uHdmHHjh387JoUrIAZy0rKkG6tw47XX8V/ruXCsagC1Ws8jk5a/KenZ6N02wZkKtT35cuUmosNG4thaW+cFa11dWkB0NaA1kmBGD5+SiPjyZ9t+oGt54yPo+ruXfzvvj4covlXmIEnBOs4H38rJQWjcRM5gfVljjICIWuuYq/TdMKH4Ml2GJ95Co6HjdQgHcoteUvibg1y8ChouOKNGxiE4ZZmlaAPGPooLBT2dOMoVOad9Wqe1DhNV5ZSk3oQOEcBoJHirlAgnVyIkc0rYDw+AvszRsS//5W7luthMwxn+LJ/JgtxrRSa1NbH8ynIB8SEJDMPJ8LxLLX64U5Y3p8yERuuec3XNOfaV6XAeLIBJq8Wi7PnYV6+DmPcw03Y2+luR41/XfiZk4AL/4yEs15Hqyuhta8IkZ1adtsgRouygLPtnseoKY8/Ti21losSExccNNeardQyB24gbtWD1GY5DknJMGx6zL0A87UyKLUTd+lrLtq8lpCztEys2ETcFgKXp8Zv1sa/lQu9FFoW1i6D03SXGnkW5h0Pwd7IVb4ZQ+jt7eGHmlxvL7q9UCn11ze/uDgb/dRsD7Z62uyt247cvNNw7yqaCvASBV9X/es45tVUexv3oi73M1S+VIT9F5v0NAHbxXrS73A/29OwC58XnMY6asK42Iamph6UlKwBjh300EotwXO5LKppcX8fYH+Am7DxJTzo7qPnMd//D1qPYm+jRwtH70E0PbcaG5ZlA03ZuvgftNYHr9/oaSyz7AN8sC4byVyj9Lefwt49+voteCyuOoyKFdTYMYib7W1oabGiy5SL57LbsWO/j4kik5pzzk18eShw8MLBLxCtwJzZpp/idLrNvn8xMoI/UdlLvWk04g1aBkQapoC1BxGyg8wTQnh6umswBHWAGghCw8W83wfJF9JkkHSmJ2EfGQryvI15I0HyxeIgmC+aUp+mtzfT76ELV7bkzKdJlFqcW9szJ8LJfwxzxiRPM2yn14Q4gQrnh8ukf9/McJqCSQi8N40w/IZ/UysVyWWiALVTM1xAc64QICJPmMbtLKc8A/91Ln6AGi0FTbA0n440lhEYO6dM0uIxw2XS+jmFB4RwDZ9/2O7CeDmIB7Ou9oMxPpVnbO6EYRUXK4vaYWY3nfn0Kh++BovVARcX+hj2rniIhXvBIZLAJ4QUd9V//Aw/DMO1WGiS2oujSOBnPH0eiW19GNlLj53lT2LoV1z4vHsO8ToWgkNNO1Bf8CnKD3yKNe0taDrVgMaLQSRQMDxMhcjMoDxu6PIr7er14piRQ0cemlm7/el1tffA/FIO8tAEr0gLRt2bZ0Nvl3/9np5+JGd7tNWeL5vQXrYOlQV1qKGZN3VFEXKG2rDHqtehhfSnmW4Hyb5Z
<ul>
<li style="list-style-type: none;">
<ul>
<li>Создаём файл и запускаем скрипт повторно:</li>
</ul>
</li>
</ul>
<p><img src="data:image/png;base64,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
<ul>
<li><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">В домашней директории пользователя <strong>altlinux</strong> из под пользователя <strong>altlinux</strong> создаём файл <strong>Dockerfile</strong>:</span></span></span></li>
</ul>
<pre class="language-markup"><code>vim ~/Dockerfile</code></pre>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Помещаем в него следующее содержимое:
<ul>
<li>Реализуем функционал согласно требованиям задания:</li>
</ul>
</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>FROM python:3.8-alpine
WORKDIR /root
COPY py.py .
COPY input.txt .
CMD ["python", "py.py"]</code></pre>
<ul>
<li>Устанавливаем <strong>docker</strong>:</li>
</ul>
<pre class="language-markup"><code>sudo apt-get install -y docker-engine</code></pre>
<ul>
<li>Включаем и добавляем в автозагрузку службу <strong>docker</strong>:</li>
</ul>
<pre class="language-markup"><code>sudo systemctl enable --now docker.service</code></pre>
<ul>
<li>Запускаем сборку docker-образа из ранее описанного Dockerfile:
<ul>
<li>Имя собранного образа в данном случае будет <strong><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">file-copy-python</span></span></span></strong></li>
<li>Запуск команды выполняется из домашнего каталога пользователя <strong>altlinux</strong>, в текущем каталоге находится сам <strong>Dockerfile</strong>, файл скрипта <strong>py.py</strong> и файл <strong>input.txt</strong>;</li>
</ul>
</li>
</ul>
<pre class="language-markup"><code>sudo docker build -t file-copy-python .</code></pre>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Результат:</li>
</ul>
</li>
</ul>
<p><img height="472" src="data:image/png;base64,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
<ul>
<li>Проверяем наличие собранного образа:</li>
</ul>
<p><img src="data:image/png;base64,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
<ul>
<li>Запускаем docker-контейнер из собранного образа и проверяем что содержимое файла <strong><span style="font-family: Times New Roman, serif;"><span style="color: #000000;"><span style="font-size: large;">input.txt</span></span></span></strong> выводится на экран:</li>
</ul>
<pre class="language-markup"><code>sudo docker run --rm file-copy-python</code></pre>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Результат:</li>
</ul>
</li>
</ul>
<p><img src="data:image/png;base64,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
</section>
</div>
</div>
</div>
<div class="moove-container-fluid p-0 mb-4">
<div class="card activity-navigation mdl-bottom">
<div class="card-body">
<div class="row">
<div class="col-md-4"> <div id="prev-activity">
<div class="larrow">
<i class="icon-arrow-left"></i>
</div>
<div class="text">
<span class="nav-guide">
Предыдущий элемент курса
</span>
<a class="btn btn-link" href="https://sysahelper.ru/mod/page/view.php?id=565&amp;forceview=1" id="prev-activity-link">Создание и настройка скрипта на машине ControlVM</a>
</div>
</div>
</div>
<div class="col-md-4"> <div class="mdl-align">
<div class="urlselect">
<form action="https://sysahelper.ru/course/jumpto.php" class="form-inline" id="url_select_f69fc966751d054" method="post">
<input name="sesskey" type="hidden" value="I78ejZljGV"/>
<label class="sr-only" for="jump-to-activity">
Перейти на...
</label>
<select class="custom-select urlselect" id="jump-to-activity" name="jump">
<option selected="" value="">Перейти на...</option>
<option value="/mod/folder/view.php?id=459&amp;forceview=1">Материалы</option>
<option value="/mod/page/view.php?id=461&amp;forceview=1">Базовая настройка (имена устройств)</option>
<option value="/mod/page/view.php?id=462&amp;forceview=1">Базовая настройка (адреса устройств)</option>
<option value="/mod/page/view.php?id=499&amp;forceview=1">Настройка FW-DT (Ideco NGFW) для доступа в веб-интерфейс</option>
<option value="/mod/page/view.php?id=500&amp;forceview=1">Настройка FW-DT (Ideco NGFW) назначение IP-адресов на локальные интерфейсы</option>
<option value="/mod/page/view.php?id=468&amp;forceview=1">Настройте подключения маршрутизаторов к провайдеру (подключения R-HQ)</option>
<option value="/mod/page/view.php?id=467&amp;forceview=1">Настройте подключения маршрутизаторов к провайдеру (подключения R-DT)</option>
<option value="/mod/page/view.php?id=470&amp;forceview=1">Настройка динамической трансляции адресов (HQ)</option>
<option value="/mod/page/view.php?id=469&amp;forceview=1">Настройка динамической трансляции адресов (DT)</option>
<option value="/mod/page/view.php?id=464&amp;forceview=1">Настройка коммутации (SW1-HQ, SW2-HQ, SW3-HQ VLAN-ы)</option>
<option value="/mod/page/view.php?id=465&amp;forceview=1">Настройка коммутации (протокол основного дерева)</option>
<option value="/mod/page/view.php?id=466&amp;forceview=1">Настройка коммутации (коммутатор SW-DT)</option>
<option value="/mod/page/view.php?id=472&amp;forceview=1">Настройка протокола динамической конфигурации хостов (HQ)</option>
<option value="/mod/page/view.php?id=471&amp;forceview=1">Настройка протокола динамической конфигурации хостов (DT)</option>
<option value="/mod/page/view.php?id=473&amp;forceview=1">Между офисами DT и HQ необходимо сконфигурировать ip туннель</option>
<option value="/mod/page/view.php?id=474&amp;forceview=1">Настройте динамическую маршрутизацию OSPF (DT и HQ)</option>
<option value="/mod/page/view.php?id=475&amp;forceview=1">Настройте динамическую маршрутизацию OSPF (R-DT и FW-DT)</option>
<option value="/mod/page/view.php?id=501&amp;forceview=1">Настройка авторизации на FW-DT (Ideco NGFW) для доступа в сеть Интернет из офиса DT</option>
<option value="/mod/page/view.php?id=463&amp;forceview=1">Базовая настройка (пользователь sshuser)</option>
<option value="/mod/page/view.php?id=476&amp;forceview=1">Настройка DNS для SRV1-HQ и SRV1-DT (основной DNS сервер)</option>
<option value="/mod/page/view.php?id=477&amp;forceview=1">Настройка DNS для SRV1-HQ и SRV1-DT (резервный DNS сервер)</option>
<option value="/mod/page/view.php?id=478&amp;forceview=1">Настройка DNS для SRV1-HQ и SRV1-DT (устройства должны быть настроены)</option>
<option value="/mod/page/view.php?id=479&amp;forceview=1">Настройте синхронизацию времени между сетевыми устройствами по протоколу NTP (SRV1-HQ)</option>
<option value="/mod/page/view.php?id=480&amp;forceview=1">Настройте синхронизацию времени между сетевыми устройствами по протоколу NTP (устройства должны синхронизировать)</option>
<option value="/mod/page/view.php?id=481&amp;forceview=1">Реализация доменной инфраструктуры SAMBA AD (основной доменный контроллер)</option>
<option value="/mod/page/view.php?id=502&amp;forceview=1">Добавление всех необходимые записей типа A, PTR и CNAME средствами samba-tool</option>
<option value="/mod/page/view.php?id=482&amp;forceview=1">Реализация доменной инфраструктуры SAMBA AD (пользователи, группы, подразделения)</option>
<option value="/mod/page/view.php?id=483&amp;forceview=1">Реализация доменной инфраструктуры SAMBA AD (резервный контроллер домена)</option>
<option value="/mod/page/view.php?id=503&amp;forceview=1">Реализация доменной инфраструктуры SAMBA AD (Ввод клиентов в домен)</option>
<option value="/mod/page/view.php?id=484&amp;forceview=1">Реализация доменной инфраструктуры SAMBA AD (общая папка)</option>
<option value="/mod/page/view.php?id=488&amp;forceview=1">Реализация бекапа общей папки на сервере SRV1-HQ с использованием systemctl (юнит типа service)</option>
<option value="/mod/page/view.php?id=489&amp;forceview=1">Реализация бекапа общей папки на сервере SRV1-HQ с использованием systemctl (юнит типа timer)</option>
<option value="/mod/page/view.php?id=485&amp;forceview=1">Управление доменом с помощью ADMC (изменения рабочего стола)</option>
<option value="/mod/page/view.php?id=486&amp;forceview=1">Управление доменом с помощью ADMC (подключение общей папки)</option>
<option value="/mod/page/view.php?id=490&amp;forceview=1">Развертывание приложений в Docker на SRV2-DT (локальный Docker Registry)</option>
<option value="/mod/page/view.php?id=491&amp;forceview=1">Развертывание приложений в Docker на SRV2-DT (Dockerfile для приложения web)</option>
<option value="/mod/page/view.php?id=492&amp;forceview=1">Развертывание приложений в Docker на SRV2-DT (Docker контейнер)</option>
<option value="/mod/page/view.php?id=493&amp;forceview=1">Настройка системы централизованного мониторинга (используйте Zabbix)</option>
<option value="/mod/page/view.php?id=494&amp;forceview=1">Настройка системы централизованного мониторинга (узел системы централизованного мониторинга)</option>
<option value="/mod/page/view.php?id=495&amp;forceview=1">Настройте веб-сервер nginx как обратный прокси-сервер на SRV1-DT</option>
<option value="/mod/page/view.php?id=496&amp;forceview=1">Настройка узла управления Ansible (Инвентарь)</option>
<option value="/mod/page/view.php?id=497&amp;forceview=1">Настройка узла управления Ansible (доступ ко всем устройствам)</option>
<option value="/mod/page/view.php?id=498&amp;forceview=1">Настройка резервного копирования (установка сервера управления)</option>
<option value="/mod/page/view.php?id=504&amp;forceview=1">Настройка резервного копирования (Настройка организации и пользователя)</option>
<option value="/mod/page/view.php?id=505&amp;forceview=1">Настройка резервного копирования (установка агента)</option>
<option value="/mod/page/view.php?id=506&amp;forceview=1">Настройка резервного копирования (подключить в качестве устройства хранения)</option>
<option value="/mod/page/view.php?id=487&amp;forceview=1">Настройка межсетевого экрана</option>
<option value="/mod/page/view.php?id=532&amp;forceview=1">Развёртывание Кибер Инфраструктура (в качестве ВМ на базе Альт PVE)</option>
<option value="/mod/page/view.php?id=533&amp;forceview=1">Создание кластера хранилища</option>
<option value="/mod/page/view.php?id=534&amp;forceview=1">Настройка Вычислений в кластере Вычисления</option>
<option value="/mod/page/view.php?id=535&amp;forceview=1">Настройка учётных записей и проектов для участников</option>
<option value="/mod/page/view.php?id=570&amp;forceview=1">Потребляемые ресурсы</option>
<option value="/mod/page/view.php?id=507&amp;forceview=1">Подготовка машины ControlVM (на базе Альт Рабочая станция)</option>
<option value="/mod/page/view.php?id=550&amp;forceview=1">Подготовка облачной инфраструктуры (Установка Terraform и OpenStack)</option>
<option value="/mod/page/view.php?id=551&amp;forceview=1">Подготовка облачной инфраструктуры (Подключение Terraform к провайдеру OpenStack)</option>
<option value="/mod/page/view.php?id=552&amp;forceview=1">Подготовка облачной инфраструктуры</option>
<option value="/mod/page/view.php?id=565&amp;forceview=1">Создание и настройка скрипта на машине ControlVM</option>
<option value="/mod/page/view.php?id=567&amp;forceview=1">Развертывание приложений в Docker (азвертывание WordPress с использованием Docker Compose)</option>
<option value="/mod/page/view.php?id=568&amp;forceview=1">Развертывание базового стека ELK</option>
</select>
<noscript>
<input class="btn btn-secondary ml-1" type="submit" value="Применить"/>
</noscript>
</form>
</div>
</div>
</div>
<div class="col-md-4"> <div id="next-activity">
<div class="text">
<span class="nav-guide">
Следующий элемент курса
</span>
<a class="btn btn-link" href="https://sysahelper.ru/mod/page/view.php?id=567&amp;forceview=1" id="next-activity-link">Развертывание приложений в Docker (азвертывание WordPress с использованием Docker Compose)</a>
</div>
<div class="rarrow">
<i class="icon-arrow-right"></i>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<footer id="page-footer">
<div class="moove-container-fluid footer-columns">
<div class="row">
<div class="col-md-4 column-left">
<div class="contact">
<h3 class="footer-title">Обратная связь</h3>
<ul>
</ul>
</div>
<div class="socialnetworks">
<h3 class="footer-title">Подпишитесь</h3>
<ul class="mb-0">
</ul>
</div>
</div>
<div class="col-md-4 column-center">
<div class="logininfo">Вы используете гостевой доступ (<a href="https://sysahelper.ru/login/index.php">Вход</a>)</div>
<div class="tool_dataprivacy"><a href="https://sysahelper.ru/admin/tool/dataprivacy/summary.php">Сводка хранения данных</a></div>
<div class="tool_usertours-resettourcontainer"></div>
</div>
<div class="col-md-4 column-right">
</div>
</div>
</div>
<div class="footer-content-debugging footer-dark bg-dark text-light">
<div class="moove-container-fluid footer-dark-inner">
</div>
</div>
<div data-region="footer-container-popover">
<button aria-label="Показать нижний колонтитул" class="btn btn-icon bg-secondary icon-no-margin btn-footer-popover" data-action="footer-popover">
<i aria-hidden="true" class="icon fa fa-question fa-fw"></i>
</button>
</div>
<div class="footer-content-popover container" data-region="footer-content-popover">
<div class="footer-section p-3">
<div>На платформе <a href="https://moodle.com">Moodle</a></div>
</div>
</div>
<div class="copyright">
<div class="madeby">
<p>Тема оформления сайта разработана</p>
<a href="https://conecti.me">
<img alt="Conecti.me" src="data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE0NiIgdmlld0JveD0iMCAwIDU3MiAxNDYiIHdpZHRoPSI1NzIiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxkZWZzPjxwYXRoIGlkPSJhIiBkPSJtMTg4LjA1NTk4IDEwMS40MzA4NGM1LjIzNTEyIDAgOS41OTc3Mi0xLjYyMzg1NjcgMTMuMDg3OC00Ljg3MTU3LjU4MTY4LS41ODE2OC44NzI1Mi0xLjIzNjA3Ljg3MjUyLTEuOTYzMTcgMC0uOTY5NDY2Ny0uNDYwNDk3LTEuODQxOTg2Ny0xLjM4MTQ5LTIuNjE3NTYtLjU4MTY4LS40MzYyNi0xLjIxMTgzMy0uNjU0MzktMS44OTA0Ni0uNjU0MzktLjg3MjUyIDAtMS43NjkyNzcuMzM5MzEzMy0yLjY5MDI3IDEuMDE3OTQtMi4wMzU4OCAxLjY5NjU2NjctNC43MDE5MTMgMi41NDQ4NS03Ljk5ODEgMi41NDQ4NS0yLjUyMDYxMyAwLTQuNzYyNTA1LS41ODE2OC02LjcyNTY3NS0xLjc0NTA0cy0zLjQ5MDA4LTIuNzc1MDk4My00LjU4MDczLTQuODM1MjE1LTEuNjM1OTc1LTQuMzk4OTU1LTEuNjM1OTc1LTcuMDE2NTE1YzAtNC4xMjAyMzMzIDEuMTYzMzYtNy40Mjg1MzgzIDMuNDkwMDgtOS45MjQ5MTVzNS4zNTYzMDMtMy43NDQ1NjUgOS4wODg3NS0zLjc0NDU2NWMxLjg0MTk4NyAwIDMuNDc3OTYyLjMwMjk1ODMgNC45MDc5MjUuOTA4ODc1czIuNzUwODYyIDEuNTYzMjY1IDMuOTYyNjk1IDIuODcyMDQ1Yy43NzU1NzMuODcyNTIgMS43MjA4MDMgMS4zMDg3OCAyLjgzNTY5IDEuMzA4NzguNjMwMTUzIDAgMS4xODc1OTctLjE2OTY1NjcgMS42NzIzMy0uNTA4OTcgMS4wNjY0MTMtLjcyNzEgMS41OTk2Mi0xLjYyMzg1NjcgMS41OTk2Mi0yLjY5MDI3IDAtLjcyNzEtLjI0MjM2Ny0xLjM1NzI1MzMtLjcyNzEtMS44OTA0Ni0zLjc4MDkyLTQuMzYyNi04LjUzMTMwNy02LjU0MzktMTQuMjUxMTYtNi41NDM5LTMuNzgwOTIgMC03LjE3NDA1My44NjA0MDE3LTEwLjE3OTQgMi41ODEyMDVzLTUuMzQ0MTg1IDQuMTIwMjMzMy03LjAxNjUxNSA3LjE5ODI5LTIuNTA4NDk1IDYuNTU2MDE4My0yLjUwODQ5NSAxMC40MzM4ODVjMCAzLjc4MDkyLjg2MDQwMiA3LjIxMDQwODMgMi41ODEyMDUgMTAuMjg4NDY1czQuMTA4MTE1IDUuNDg5NjA1IDcuMTYxOTM1IDcuMjM0NjQ1IDYuNDk1NDI3IDIuNjE3NTYgMTAuMzI0ODIgMi42MTc1NnptNDMuNjk4NzEgMGMzLjg3Nzg2NyAwIDcuMzMxNTkyLS44NjA0MDIgMTAuMzYxMTc1LTIuNTgxMjA1IDMuMDI5NTgzLTEuNzIwODAzMyA1LjM5MjY1OC00LjEwODExNSA3LjA4OTIyNS03LjE2MTkzNXMyLjU0NDg1LTYuNTE5NjYzMyAyLjU0NDg1LTEwLjM5NzUzYzAtMy45MjYzNC0uODYwNDAyLTcuNDE2NDItMi41ODEyMDUtMTAuNDcwMjRzLTQuMDk1OTk3LTUuNDQxMTMxNy03LjEyNTU4LTcuMTYxOTM1LTYuNDU5MDcyLTIuNTgxMjA1LTEwLjI4ODQ2NS0yLjU4MTIwNWMtMy44Nzc4NjcgMC03LjM0MzcxLjg2MDQwMTctMTAuMzk3NTMgMi41ODEyMDVzLTUuNDI5MDEzIDQuMTA4MTE1LTcuMTI1NTggNy4xNjE5MzUtMi41NDQ4NSA2LjU0MzktMi41NDQ4NSAxMC40NzAyNGMwIDMuODc3ODY2Ny44NDgyODMgNy4zNDM3MSAyLjU0NDg1IDEwLjM5NzUzczQuMDcxNzYgNS40NDExMzE3IDcuMTI1NTggNy4xNjE5MzVjMy4wNTM4MiAxLjcyMDgwMyA2LjUxOTY2MyAyLjU4MTIwNSAxMC4zOTc1MyAyLjU4MTIwNXptMC02LjU0MzljLTIuNDcyMTQgMC00LjY4OTc5NS0uNTgxNjgtNi42NTI5NjUtMS43NDUwNHMtMy41MDIxOTgtMi43NzUwOTgzLTQuNjE3MDg1LTQuODM1MjE1LTEuNjcyMzMtNC4zOTg5NTUtMS42NzIzMy03LjAxNjUxNS41NTc0NDMtNC45Njg1MTY3IDEuNjcyMzMtNy4wNTI4NyAyLjY1MzkxNS0zLjcwODIxIDQuNjE3MDg1LTQuODcxNTcgNC4xODA4MjUtMS43NDUwNCA2LjY1Mjk2NS0xLjc0NTA0IDQuNjg5Nzk1LjU4MTY4IDYuNjUyOTY1IDEuNzQ1MDQgMy40OTAwOCAyLjc4NzIxNjcgNC41ODA3MyA0Ljg3MTU3IDEuNjM1OTc1IDQuNDM1MzEgMS42MzU5NzUgNy4wNTI4Ny0uNTQ1MzI1IDQuOTU2Mzk4My0xLjYzNTk3NSA3LjAxNjUxNS0yLjYxNzU2IDMuNjcxODU1LTQuNTgwNzMgNC44MzUyMTUtNC4xODA4MjUgMS43NDUwNC02LjY1Mjk2NSAxLjc0NTA0em02NC42MzkxOSA2LjMyNTc3YzEuMDY2NDEzIDAgMS45NTEwNTItLjM1MTQzMiAyLjY1MzkxNS0xLjA1NDI5NS43MDI4NjMtLjcwMjg2MzMgMS4wNTQyOTUtMS41ODc1MDE3IDEuMDU0Mjk1LTIuNjUzOTE1di0xNy44ODY2NmMwLTMuOTI2MzQtLjc1MTMzNy03LjI4MzExODMtMi4yNTQwMS0xMC4wNzAzMzVzLTMuNTg3MDI3LTQuOTA3OTI1LTYuMjUzMDYtNi4zNjIxMjUtNS42NzEzOC0yLjE4MTMtOS4wMTYwNC0yLjE4MTNjLTIuNDIzNjY3IDAtNC43MDE5MTMuNDI0MTQxNy02LjgzNDc0IDEuMjcyNDI1cy0zLjk3NDgxMyAyLjA0Nzk5ODMtNS41MjU5NiAzLjU5OTE0NXYtLjc5OTgxYzAtMS4xMTQ4ODY3LS4zMzkzMTMtMi4wMTE2NDMzLTEuMDE3OTQtMi42OTAyN3MtMS41NzUzODMtMS4wMTc5NC0yLjY5MDI3LTEuMDE3OTRjLTEuMDY2NDEzIDAtMS45NTEwNTIuMzM5MzEzMy0yLjY1MzkxNSAxLjAxNzk0cy0xLjA1NDI5NSAxLjU3NTM4MzMtMS4wNTQyOTUgMi42OTAyN3YzMi40Mjg2NmMwIDEuMDY2NDEzMy4zNTE0MzIgMS45NTEwNTE3IDEuMDU0Mjk1IDIuNjUzOTE1LjcwMjg2My43MDI4NjMgMS41ODc1MDIgMS4wNTQyOTUgMi42NTM5MTUgMS4wNTQyOTUgMS4xMTQ4ODcgMCAyLjAxMTY0My0uMzUxNDMyIDIuNjkwMjctMS4wNTQyOTUuNjc4NjI3LS43MDI4NjMzIDEuMDE3OTQtMS41ODc1MDE3IDEuMDE3OTQtMi42NTM5MTV2LTIwLjUwNDIyYzAtMS43NDUwNC40NzI2MTUtMy4zMjA0MjMzIDEuNDE3ODQ1LTQuNzI2MTVzMi4yNTQwMS0yLjUyMDYxMzMgMy45MjYzNC0zLjM0NDY2IDMuNTI2NDM1LTEuMjM2MDcgNS41NjIzMTUtMS4yMzYwN2MzLjQ5MDA4IDAgNi4yODk0MTUgMS4wMDU4MjE3IDguMzk4MDA1IDMuMDE3NDY1czMuMTYyODg1IDQuOTgwNjM1IDMuMTYyODg1IDguOTA2OTc1djE3Ljg4NjY2Yz
</a>
</div>
</div>
</footer>
<!-- Yandex.Metrika counter -->
<script type="text/javascript">
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(96198090, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
</script>
<noscript><div><img alt="" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" style="position:absolute; left:-9999px;"/></div></noscript>
<!-- /Yandex.Metrika counter --><script>
//<![CDATA[
var require = {
baseUrl : 'https://sysahelper.ru/lib/requirejs.php/1703880200/',
// We only support AMD modules with an explicit define() statement.
enforceDefine: true,
skipDataMain: true,
waitSeconds : 0,
paths: {
jquery: 'https://sysahelper.ru/lib/javascript.php/1703880200/lib/jquery/jquery-3.7.1.min',
jqueryui: 'https://sysahelper.ru/lib/javascript.php/1703880200/lib/jquery/ui-1.13.2/jquery-ui.min',
jqueryprivate: 'https://sysahelper.ru/lib/javascript.php/1703880200/lib/requirejs/jquery-private'
},
// Custom jquery config map.
map: {
// '*' means all modules will get 'jqueryprivate'
// for their 'jquery' dependency.
'*': { jquery: 'jqueryprivate' },
// Stub module for 'process'. This is a workaround for a bug in MathJax (see MDL-60458).
'*': { process: 'core/first' },
// 'jquery-private' wants the real jQuery module
// though. If this line was not here, there would
// be an unresolvable cyclic dependency.
jqueryprivate: { jquery: 'jquery' }
}
};
//]]>
</script>
<script src="https://sysahelper.ru/lib/javascript.php/1703880200/lib/requirejs/require.min.js"></script>
<script>
//<![CDATA[
M.util.js_pending("core/first");
require(['core/first'], function() {
require(['core/prefetch'])
;
M.util.js_pending('filter_mathjaxloader/loader'); require(['filter_mathjaxloader/loader'], function(amd) {amd.configure({"mathjaxconfig":"\nMathJax.Hub.Config({\n config: [\"Accessible.js\", \"Safe.js\"],\n errorSettings: { message: [\"!\"] },\n skipStartupTypeset: true,\n messageStyle: \"none\"\n});\n","lang":"ru"}); M.util.js_complete('filter_mathjaxloader/loader');});;
require(["media_videojs/loader"], function(loader) {
loader.setUp('ru');
});;
M.util.js_pending('core_courseformat/courseeditor'); require(['core_courseformat/courseeditor'], function(amd) {amd.setViewFormat("35", {"editing":false,"supportscomponents":true,"statekey":"1771561096_1778160107","overriddenStrings":[{"component":"format_topics","key":"sectionavailability_title"},{"component":"format_topics","key":"sectiondelete_title"},{"component":"format_topics","key":"sectionsdelete_title"},{"component":"format_topics","key":"sectionsdelete_info"},{"component":"format_topics","key":"sectionmove_title"},{"component":"format_topics","key":"sectionsavailability_title"},{"component":"format_topics","key":"sectionsmove_title"},{"component":"format_topics","key":"sectionsmove_info"},{"component":"format_topics","key":"selectsection"}]}); M.util.js_complete('core_courseformat/courseeditor');});;
require(['core_courseformat/local/courseindex/placeholder'], function(component) {
component.init('course-index-placeholder');
});
;
require(['core_courseformat/local/courseindex/drawer'], function(component) {
component.init('courseindex');
});
;
M.util.js_pending('core_courseformat/local/content/activity_header'); require(['core_courseformat/local/content/activity_header'], function(amd) {amd.init(); M.util.js_complete('core_courseformat/local/content/activity_header');});;
require(['theme_moove/accessibilitybar'], function(AccessibilityBar) {
AccessibilityBar.init();
});
;
require(['core/moremenu'], function(moremenu) {
moremenu(document.querySelector('#moremenu-69fc966751614-navbar-nav'));
});
;
require(
[
'jquery',
],
function(
$
) {
var uniqid = "69fc966752e6d69fc966751d052";
var container = $('#searchinput-navbar-' + uniqid);
var opensearch = container.find('[data-action="opensearch"]');
var input = container.find('[data-region="input"]');
var submit = container.find('[data-action="submit"]');
submit.on('click', function(e) {
if (input.val() === '') {
e.preventDefault();
}
});
container.on('hidden.bs.collapse', function() {
opensearch.removeClass('d-none');
input.val('');
});
container.on('show.bs.collapse', function() {
opensearch.addClass('d-none');
});
container.on('shown.bs.collapse', function() {
input.focus();
});
});
;
require(
[
'jquery',
],
function(
$
) {
var uniqid = "69fc9667532f369fc966751d053";
var container = $('#searchinput-navbar-' + uniqid);
var opensearch = container.find('[data-action="opensearch"]');
var input = container.find('[data-region="input"]');
var submit = container.find('[data-action="submit"]');
submit.on('click', function(e) {
if (input.val() === '') {
e.preventDefault();
}
});
container.on('hidden.bs.collapse', function() {
opensearch.removeClass('d-none');
input.val('');
});
container.on('show.bs.collapse', function() {
opensearch.addClass('d-none');
});
container.on('shown.bs.collapse', function() {
input.focus();
});
});
;
require(['core/usermenu', 'theme_moove/accessibilitysettings'], function(UserMenu, AccessibilitySettings) {
UserMenu.init();
AccessibilitySettings.init();
});
;
require(['theme_boost/drawers']);
;
require(['theme_boost/drawers']);
;
require(['jquery', 'core/custom_interaction_events'], function($, CustomEvents) {
CustomEvents.define('#jump-to-activity', [CustomEvents.events.accessibleChange]);
$('#jump-to-activity').on(CustomEvents.events.accessibleChange, function() {
if ($(this).val()) {
$('#url_select_f69fc966751d054').submit();
}
});
});
;
require(['theme_boost/footer-popover'], function(FooterPopover) {
FooterPopover.init();
});
;
M.util.js_pending('theme_boost/loader');
require(['theme_boost/loader', 'theme_boost/drawer'], function(Loader, Drawer) {
Drawer.init();
M.util.js_complete('theme_boost/loader');
});
;
M.util.js_pending('core/notification'); require(['core/notification'], function(amd) {amd.init(931, []); M.util.js_complete('core/notification');});;
M.util.js_pending('core/log'); require(['core/log'], function(amd) {amd.setConfig({"level":"warn"}); M.util.js_complete('core/log');});;
M.util.js_pending('core/page_global'); require(['core/page_global'], function(amd) {amd.init(); M.util.js_complete('core/page_global');});;
M.util.js_pending('core/utility'); require(['core/utility'], function(amd) {M.util.js_complete('core/utility');});
M.util.js_complete("core/first");
});
//]]>
</script>
<script src="https://cdn.jsdelivr.net/npm/mathjax@2.7.9/MathJax.js?delayStartupUntil=configured"></script>
<script>
//<![CDATA[
M.str = {"moodle":{"lastmodified":"\u041f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435","name":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435","error":"\u041e\u0448\u0438\u0431\u043a\u0430","info":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f","yes":"\u0414\u0430","no":"\u041d\u0435\u0442","cancel":"\u041e\u0442\u043c\u0435\u043d\u0430","confirm":"\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044c","areyousure":"\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b?","closebuttontitle":"\u0417\u0430\u043a\u0440\u044b\u0442\u044c","unknownerror":"\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430","file":"\u0424\u0430\u0439\u043b","url":"URL","collapseall":"\u0421\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0451","expandall":"\u0420\u0430\u0437\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0432\u0441\u0451"},"repository":{"type":"\u0422\u0438\u043f","size":"\u0420\u0430\u0437\u043c\u0435\u0440","invalidjson":"\u041d\u0435\u0432\u0435\u0440\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 JSON","nofilesattached":"\u041d\u0435 \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d \u043d\u0438 \u043e\u0434\u0438\u043d \u0444\u0430\u0439\u043b","filepicker":"\u0412\u044b\u0431\u043e\u0440 \u0444\u0430\u0439\u043b\u0430","logout":"\u0412\u044b\u0445\u043e\u0434","nofilesavailable":"\u041d\u0435\u0442 \u043d\u0438 \u043e\u0434\u043d\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430","norepositoriesavailable":"\u041a \u0441\u043e\u0436\u0430\u043b\u0435\u043d\u0438\u044e, \u043d\u0438 \u043e\u0434\u043d\u043e \u0438\u0437 \u0412\u0430\u0448\u0438\u0445 \u0442\u0435\u043a\u0443\u0449\u0438\u0445 \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449 \u0444\u0430\u0439\u043b\u043e\u0432 \u043d\u0435 \u043c\u043e\u0436\u0435\u0442 \u0432\u0435\u0440\u043d\u0443\u0442\u044c \u0444\u0430\u0439\u043b\u044b \u0432 \u0437\u0430\u043f\u0440\u0430\u0448\u0438\u0432\u0430\u0435\u043c\u043e\u043c \u0444\u043e\u0440\u043c\u0430\u0442\u0435.","fileexistsdialogheader":"\u0424\u0430\u0439\u043b \u0441\u043e\u0437\u0434\u0430\u043d","fileexistsdialog_editor":"\u0424\u0430\u0439\u043b \u0441 \u044d\u0442\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0443\u0436\u0435 \u0431\u044b\u043b \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d \u043a \u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0443\u0435\u043c\u043e\u043c\u0443 \u0442\u0435\u043a\u0441\u0442\u0443","fileexistsdialog_filemanager":"\u0424\u0430\u0439\u043b \u0441 \u044d\u0442\u0438\u043c \u0438\u043c\u0435\u043d\u0435\u043c \u0443\u0436\u0435 \u0431\u044b\u043b \u043f\u0440\u0438\u043a\u0440\u0435\u043f\u043b\u0435\u043d","renameto":"\u041f\u0435\u0440\u0435\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u0442\u044c \u0432 \u00ab{$a}\u00bb","referencesexist":"\u041d\u0430 \u044d\u0442\u043e\u0442 \u0444\u0430\u0439\u043b \u0435\u0441\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0438: {$a}","select":"\u0412\u044b\u0431\u0440\u0430\u0442\u044c"},"admin":{"confirmdeletecomments":"\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b \u0432 \u0442\u043e\u043c, \u0447\u0442\u043e \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u0442\u0435\u0441\u044c \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0438?","confirmation":"\u041f\u043e\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043d\u0438\u0435"},"debug":{"debuginfo":"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e\u0431 \u043e\u0442\u043b\u0430\u0434\u043a\u0435","line":"\u0421\u0442\u0440\u043e\u043a\u0430","stacktrace":"\u0422\u0440\u0430\u0441\u0441\u0438\u0440\u043e\u0432\u043a\u0438 \u0441\u0442\u0435\u043a\u0430"},"langconfig":{"labelsep":":"}};
//]]>
</script>
<script>
//<![CDATA[
(function() {M.util.help_popups.setup(Y);
M.util.js_pending('random69fc966751d055'); Y.on('domready', function() { M.util.js_complete("init"); M.util.js_complete('random69fc966751d055'); });
})();
//]]>
</script>
</div>
</div>
</body></html>