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

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

После первого запуска контейнера 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-пакет

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

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

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

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

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

Установка интерпретатора python из исходников

Находим ссылку на исходники нужной нам версии python: https://www.python.org/downloads/release/.

Я буду устанавливать версию 3.7.5: https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz.

На машине имеющей доступ к интернету скачиваем их:

wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tar.xz

Переносим на машину, не имеющую доступа к интернету, и кладём их в папку доступную для сервиса выполнения скриптов. Выполняем команду:

tar xJf Python-3.7.5.tar.xz

Пишем следующий текст в файл start-script.sh:

/mnt/volume/Python-3.7.5/configure make -C /mnt/volume/Python-3.7.5 make -C /mnt/volume/Python-3.7.5 install

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

Обратите внимание, что для того, чтобы сервис использовал его, необходимо в config.json сервиса выполнения скриптов написать путь до нового установленного интерпретатора: "/usr/local/bin/python3".

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

Установка пакета 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

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