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

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

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

import sys
print(sys.version)

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

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

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

# apt-get update && apt-get install -y python-pip
# pip install wheel

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

# mkdir wheels2

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

# touch requirements.txt

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

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

# pip install torch==1.3.1+cpu torchvision==0.4.2+cpu -f https://download.pytorch.org/whl/torch_stable.html

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

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

torch==1.3.1+cpu
torchvision==0.4.2+cpu

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

# pip install -r requirements.txt -f https://download.pytorch.org/whl/torch_stable.html --user

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

# pip wheel -w wheels2/ -r requirements.txt --pre -f https://download.pytorch.org/whl/torch_stable.html

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

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

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


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

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

/docker-volume/python-script-service

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

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

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

pip install --no-index -f /mnt/volume/wheels2/ -r /mnt/volume/wheels2/requirements.txt

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

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

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

import torch
result = torch.cuda.is_available()

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

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

apt-get update && apt-get install -y python3-pip
pip3 install wheel

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

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

pip3 install torch==1.3.1+cpu torchvision==0.4.2+cpu -f https://download.pytorch.org/whl/torch_stable.html

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

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

mkdir wheels3

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

touch requirements.txt
В файл requirements.txt записываем следующий текст (названия пакетов, которые нужно установить):
torch==1.3.1+cpu
torchvision==0.4.2+cpu

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

pip3 install -r requirements.txt -f https://download.pytorch.org/whl/torch_stable.html --user
pip3 wheel -w wheels3/ -r requirements.txt --pre -f https://download.pytorch.org/whl/torch_stable.html

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

/home/{username}/python-script-service

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

/mnt/volume

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

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

pip3 install --no-index -f /mnt/volume/wheels3/ -r /mnt/volume/requirements.txt

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

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

import torch
result = torch.cuda.is_available()

Related content

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