/
Изменение конфигурации сервиса выполнения скриптов

Изменение конфигурации сервиса выполнения скриптов

Где настраивается python-script-service

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

Путь к точке монтирования на хосте:

/var/lib/docker/volumes/start-script.sh/visiology3_python-script-service-3_data/

Путь к точке монтирования в контейнере:

/mnt/volume

Стартовый скрипт start-script.sh находится в корне примонтированной директории и выполняется каждый раз при запуске контейнера с сервисом. В него можно добавить необходимые вам команды, такие, как загрузка и установка пакетов, выполнение скриптов и прочее.

Файл конфигураций config.json также находится в корне примонтированной директории. В нем можно настроить путь до интерпретатора Python (см. ниже).

Выполнение настроек

После первого запуска контейнера python-script-service сервиса в папке /docker-volume/python-script-service сервиса будет создан файл start-script.sh – это файл скрипта, который будет запускаться при запуске контейнера. В нём может быть написана логика настраивающая контейнер, может быть установлен нужный интерпретатор Python и установлены нужные пакеты.

Настройка пути до интерпретатора Python

Чтобы настроить путь до интерпретатора Python, который будет вызывать сервис, есть несколько вариантов (перечислены в порядке увеличения приоритета от меньшего к большему):

  1. По умолчанию под Linux сервис будет использовать путь "/usr/bin/python", а под Windows "C:\Program Files (x86)\Python38-32\python".

  2. Если в системе определена переменная окружения с именем "SCRIPTEXECUTOR_PythonPath", то её значение будет использовано, как путь до интерпретатора.

  3. В сетевой папке сервиса есть файл config.json, если в нём указать значение свойства "PythonPath", то будет использовано оно.

Настройка окружения в закрытом контуре

Так как сервис позволяет выполнить собственный bash-скрипт при запуске docker-контейнера, который будет иметь доступ к docker-контейнеру под администраторскими правами и папке хвостового сервера, доступной через сетевую папку (настраивается при запуске docker-контейнера), то есть множество способов настроить docker-контейнер сервиса, без интернета.

Например, можно использовать offline-репозиторий: https://help.ubuntu.com/community/AptGet/Offline/Repository/.

А для установки Python-пакетов без интернета, использовать wheel: https://dizballanze.com/ru/python-wheels-dlia-bystroi-ustanovki-zavisimostei/.

Также возможна установка напрямую из исходного кода: https://www.tecmint.com/install-python-in-linux/.

Установка библиотек для Python без доступа в интернет

  1. На компьютере с доступом в интернет установить Python той же версии, что и на ВМ.

  2. Заполнить файл requirements.txt с необходимыми библиотеками. Пример файла requirements.txt:

    requests==2.31.0 setuptools==59.2.0 wheel==0.37.0
  3. Загрузить необходимые пакеты в указанную папку:

    pip3 download -r ./requirements.txt --dest /mnt/volume/packages
  4. Добавить в скрипт start-script.sh команду оффлайн-установки пакетов из указанной папки:

    pip3 install --no-index --find-links=/mnt/volume/packages -r /mnt/volume/requirements.txt
  5. Перезапустить платформу.

Итоговый вариант скрипта start-script.sh с оффлайн-установкой библиотек:

Вариант скрипта для Red OS:

Скрипт для проверки используемой версии Python:

Какой способ установки выбрать?

У вас есть несколько способов развернуть нужное вам программное обеспечение в сервисе выполнения скриптов, выбирайте тот способ, который вам будет проще использовать в вашей конкретной ситуации, нельзя дать однозначную рекомендацию, какой способ использовать, так как в каждом конкретном случае могут быть свои нюансы, которые могут повлиять на выбор. Если вы не знаете какой способ выбрать, то ниже даны наши рекомендации.

Необходимо установить Python-пакет

Скорее всего самым простым способом установить Python-пакет будет способ установки с использованием wheel – выбирайте его тогда, когда этот пакет можно поставить с использованием pip. Поищите этот пакет на сайте https://pypi.org/ или информацию об установке через pip на странице этого пакета, а дальше посмотрите пример установки pytorch через wheel и затем адаптируйте инструкцию к установке того конкретного пакета, который вам нужно установить. Важным нюансом установки через wheel является то, что вам нужно выяснить полный список пакетов, от которых зависит пакет, который вы ставите и явно прописать этот список в файл requirements.txt. Чтобы выяснить этот список, вы можете, например, установить нужный вам пакет через pip на свежеустановленной операционной системе такой же, какая используется сейчас в сервисе выполнения скриптов (на данный момент это Ubuntu Bionic) и посмотреть какие пакеты дополнительно при этом ставятся.

Если через pip поставить пакет нельзя и он присутствует в репозитории ubuntu, вы можете использовать оффлайн-репозиторий для его установки.

Если в репозитории он тоже отсутствует, то остаётся способ установки с использованием исходного кода – идите на страничку нужного вам пакета и ищите инструкцию по установке из исходников, если инструкции там нет, то нужно поискать эту инструкцию с использованием какого-либо поисковика, например google.com.

Необходимо установить Python-интерпретатор

Рекомендуем установку из исходников, пример установки интерпретатора Python приводится ниже.

Установка Python-интерпретатора

  1. Найти и скачать нужный архив с Python. Архивы можно найти на сайте Index of /ftp/python/. Скачать архив можно вручную, либо следующей командой:

    В инструкции для примера будет использована версия Python 3.8.16. Ее можно изменить на нужную вам.

  2. Если на ВМ отсутствует доступ к сети Интернет, можно выполнить шаг 1 там, где доступ есть, и переместить скачанный файл на ВМ.

  3. Распаковать архив:

  4. Отредактировать файл /var/lib/docker/volumes/visiology3_python-script-service-3_data/_data/start-script.sh, вставив следующее содержимое:

    Вариант скрипта для Red OS:

  5. Перезапустить платформу.

Установка пакета pytorch для интерпретатора Python 2.7 с использованием wheel

  1. Работы происходят на машине, имеющей доступ к интернету 

1.1 Устанавливаем Python, pip и wheel:

1.2 Создаём папку wheels2:

1.3 Создаём файл requirements.txt:

1.4 На сайте pytorch смотрим как установить его через pip: https://pytorch.org/get-started/locally/#start-locally.

Для python 2 нужно выполнить команду: 

Выполнять её не будем, просто возьмём оттуда названия пакетов, которые нам нужны.

1.5 В файл requirements.txt записываем следующий текст (названия пакетов, которые нужно установить из предыдущего пункта):

1.6 Выполняем команды:

(синтаксис: # pip install -r requirements.txt {ваши дополнительные параметры из pip install} --user )

(синтаксис: # pip wheel -w wheels2/ -r requirements.txt --pre {ваши дополнительные параметры из pip install} )

1.7. Копируем файл requirements.txt в папку wheels2.

Теперь все необходимые пакеты находятся в папке wheels2, скачиваем эту  папку на накопитель и переносим на машину, на которой отсутствует доступ в интернет.


2. Работы происходят на машине, не имеющей доступ к интернету (в закрытом контуре)

2.1 Копируем папку wheels2 в папку, которая доступна с хостовой машины в сервис выполнения скриптов, в моём случае это папка:

Это настраивается при запуске контейнера.

2.2 Переходим в папку и правим файл start-script.sh (должен появиться после первого запуска docker-контейнера в папке /docker-volume/python-script-service ).

В конец файла добавить строчку:

2.3 Перезапустить сервис выполнения скриптов.

Теперь при запуске docker-контейнера будет установлен pytorch.

Проверить установку можно запустив в сервисе скрипт:

Установка пакета pytorch для интерпретатора Python 3.6 с использованием wheel

На машине имеющий доступ к интернету устанавливаем Python 3, pip и wheel.

На сайте pytorch смотрим, как установить его через pip: https://pytorch.org/get-started/locally/#start-locally.

Для Python 3 нужно выполнить команду: 

Выполнять её не будем, просто возьмём оттуда названия пакетов, которые нам нужны.

Создаём папку wheels3:

Создаём файл requirements.txt:

Выполняем команды:

Теперь все необходимые пакеты находятся в папке wheels3, скачиваем их на носитель и переносим на машину, на которой отсутствует доступ в интернет и затем копируем их в папку, которая доступна с хостовой машины в сервис выполнения скриптов, в моём случае это папка:

А внутри docker-контейнера это будет папка:

Это настраивается при запуске контейнера.

На хостовом сервере переходим в сетевую папку и правим файл start-script.sh (должен появиться после первого запуска docker-контейнера).

Теперь при запуске docker-контейнера будет установлен pytorch.

Проверить установку можно попробовав, запустив в сервисе скрипт:



Related content

Конфигурация сервиса выполнения скриптов по умолчанию
Конфигурация сервиса выполнения скриптов по умолчанию
Read with this
Изменение конфигурации сервиса выполнения скриптов
Изменение конфигурации сервиса выполнения скриптов
More like this
Изменение конфигурации сервиса выполнения скриптов
Изменение конфигурации сервиса выполнения скриптов
More like this
Изменение конфигурации сервиса выполнения скриптов
Изменение конфигурации сервиса выполнения скриптов
More like this
Изменение конфигурации сервиса выполнения скриптов
Изменение конфигурации сервиса выполнения скриптов
More like this
Изменение конфигурации сервиса выполнения скриптов
Изменение конфигурации сервиса выполнения скриптов
More like this