Сборка docker-контейнераBETA
Сборка Docker-контейнера — это ключевой шаг в подготовке изолированного и воспроизводимого окружения для запуска пользовательских расширений агента автоматизации. Благодаря контейнеризации вы получаете стабильное, легко тестируемое и переносимое окружение, в котором будут работать ваши собственные реализации блоков и подключений на Python.
Базовый образ создан на базе компактного дистрибутива Alpine Linux.
Процесс сборки
Dockerfile, указанный ниже, описывает процесс сборки контейнера на основе базового образа infomaximum/infomaximum_automation-agent-ext-py. Контейнер включает в себя пользовательские реализации блоков и подключений на Python, а также все необходимые зависимости для их работы и разработки.
FROM infomaximum/infomaximum_automation-agent-ext-py:250201
USER root
COPY source-server/automation-agent-ext-py-core/src/packages/ /usr/sbin/infomaximum/python/packages/
RUN \
chown -R infomaximum:infomaximum /usr/sbin/infomaximum/python/packages/ \
\
&& apk add --update --no-cache python3-dev g++ pkgconf \
&& pip3 install -r /usr/sbin/infomaximum/python/packages/requirements.txt
USER infomaximum
Где
FROM infomaximum/infomaximum_automation-agent-ext-py:250201
— образ версии 250201. В других версиях имя образа может отличаться.USER root
— переключение на пользователя root для выполнения административных задачCOPY source-server/automation-agent-ext-py-core/src/packages/ /usr/sbin/infomaximum/python/packages/
— копирование реализаций пакетов автоматизации из локальной директории source-server/automation-agent-ext-py-core/src/packages/ в целевую директорию /usr/sbin/infomaximum/python/packages/ внутри контейнераRUN \ chown -R infomaximum:infomaximum /usr/sbin/infomaximum/python/packages/ \ \ && apk add --update --no-cache python3-dev g++ pkgconf \ && pip3 install -r /usr/sbin/infomaximum/python/packages/requirements.txt
— последовательно выполняются команды системы:- Изменение владельца скопированных файлов на пользователя
infomaximum
- Установка через Alpine Linux package manager (
apk
):python3-dev
— заголовки Python для компиляции расширенийg++
— компилятор C++pkgconf
— утилита для работы с флагами компиляции
- Установка Python-зависимостей из requirements.txt. Для продакшн-сборок рекомендуется указывать точные версии пакетов
- Изменение владельца скопированных файлов на пользователя
USER infomaximum
— возвращение выполнения от имени стандартного пользователяinfomaximum
Описание структуры контейнера
Ниже разберём структуру проекта внутри контейнера.
Структура конфигурационного файла
Конфигурационный файл com.infomaximum.subsystem.automationagentextpy.json используется для указания точек входа пользовательских скриптов на Python в контейнере.
В частности, он:
- Описывает, где именно в файловой системе контейнера находится директория, содержащая файлы entrypoint.py
- Необходим системе для корректного запуска пользовательских расширений на Python
- Используется при инициализации скриптов, когда выполняется команда
--get-info
, чтобы получить описание реализованных блоков
{"scripts":[{"dir":"/usr/sbin/infomaximum/python"}]}
Где:
scripts
— список точек входа пакетовdir
— путь к папке с entrypoint.py
Структура каталогов в контейнере
Структура каталогов в контейнере следующая:
sdk
— системные скрипты и абстракцииpackages
— папка с пользовательскими пакетами, в которых реализуется основная бизнес-логикаentrypoint.py
— скрипт запуска блоков или запроса информации о блокахrequirements.txt
— список зависимостей, нужных для работы скриптов
Была ли статья полезна?