Сборка docker-контейнера
8 800 555-89-02
Войти
infomaximum_logoДля разработчиков
CTRL+K
Standalone2506

Сборка docker-контейнераBETA

В этой статье
  • Сборка docker-контейнера
  • Процесс сборки
  • Описание структуры контейнера
  • Структура конфигурационного файла
  • Структура каталогов в контейнере

Сборка 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 — последовательно выполняются команды системы:
    1. Изменение владельца скопированных файлов на пользователя infomaximum
    2. Установка через Alpine Linux package manager (apk):
      • python3-dev — заголовки Python для компиляции расширений
      • g++ — компилятор C++
      • pkgconf — утилита для работы с флагами компиляции
    3. Установка 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 — список зависимостей, нужных для работы скриптов

Была ли статья полезна?

Да
Нет
infomaximum_logo_icon
8 (800) 555-89-028 (495) 150-31-45team@infomaximum.com

430006, Саранск,
Северо-восточное шоссе, д. 3

Для бизнеса
© 20102025. ООО «Инфомаксимум»
Мы используем файлы cookies, чтобы сайт был лучше для вас.