Skip to content

agibalovsa/-1C_DevOps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

116 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

1C-DevOps

Описание

В данном репозитории находятся файлы настроек для создания docker образов и развертывания docker контейнеров приложений, относящихся к разработке на платформах 1С:Предприятие, 1С:Элемент, 1С:Исполнитель.

Структура репозитория

  • build_deb - каталог, в котором находятся скрипты сборки deb-пакетов.
  • docker - каталог для работы с docker.
    • applications - каталоги с файлами настроек под конкретное приложении.
      • build - каталог, в котором находятся файлы описания сборки docker-образов
        • dockerfile - основной файл описания сборки docker-образа.
        • context - каталог со скриптами установки приложений, которые вызываются из dockerfile.
        • context/distr - каталог, который заполняется установочными файлами на время сборки в режиме сборки "установка из файлов".
        • .arg.tmpl - шаблон файла для задания аргументов сборки образа.
        • docker-build.sh - шаблон скрипта запуска сборки docker-образа.
        • entrypoint.sh - скрипт-точка-входа описывающий поведение контейнеров при его запуске.
        • прочие файлы скриптов и настроек, передаваемые в docker-образ.
      • compose - каталог, в котором находятся файлы описания параметров развертывания контейнера.
        • common-compose.yml - базовый файл описания настроек общих для запуска контейнера в режимах compose или swarm.
        • docker-compose.yml - файл с описанием запуска контейнера в режиме compose.
        • docker-stack.yml - файл с описанием запуска контейнера в режиме swarm.
        • .env.tmpl - шаблон файла для задания интерполирующих переменных запуска контейнера.
        • *config.tmpl - шаблоны файлов, для создания конфигураций через docker config.
        • *secret.tmpl - шаблоны файлов, для создания секретов через docker secret.
    • common_context - каталог с общими скриптами и настройками как для build, так и для compose.
    • init.sh - файл инициализации скриптов сборки или запуска контейнеров.
    • users - динамически создаваемый каталог с пользовательскими настройками сборки или запуска контейнеров.
  • .gitignore - сюда помещены:
    • .env
    • .arg
    • users

Системные настройки для работы репозитория

  • Необходимо установить docker https://docs.docker.com/engine/install/debian/#install-using-the-repository.

  • Необходимо установить расширенную программу envsubst.

    [!WARNING] Без этой программы будет не совсем корректно работать скрипт init.sh (см. ниже)

    curl -L https://github.com/a8m/envsubst/releases/download/v1.2.0/envsubst-`uname -s`-`uname -m` -o envsubst
    chmod +x envsubst
    mv envsubst /usr/local/bin
    envsubst
  • Необходимо проверить, что установлено приложение dialog

Порядок работы с репозиторием

  • Инициализация

    Для создания образа или запуска контейнера необходимо инициализировать каталог с пользовательскими настройками с помощью скрипта docker/init.sh. При запуске скрипта открывается окно, в котором необходимо:

    • Задать имя проекта
    • Выбрать тип проекта (Проект выбирается нажатием пробела):
      • build
      • compose
      • swarm (в работе...)
    • Выбрать приложение из списка доступных (Приложение выбирается нажатием пробела)
    • Для проекта типа compose для некоторых приложений выйдет окно дополнительных настроек, для выбора дополнений функционала развертываемого стека, а именно:
      • Дополнительные файлы compose, и сопутствующих им файлы настроек
      • Данные дополнения возможны для приложений:
        • fluentbit
        • sonarqube
    • После заданий настройка проекта в папке users (которая добавлена в gitignore) создадутся:
      • скрипты сборки образа
      • обобщенный файл аргументов с значениями для сборки
      • скрипты разворачивания контейнера
      • обобщенный файл переменных со значениями для настроек контейнера
  • Сборка образа

    Для создания образа необходимо задать переменные сборки. Для этого необходимо:

    • Задать значения переменных через файл docker/users/builds/common_context/.arg. Переменные не обязательны для заполнения.

      • ROOT_CERTS - URL ссылки к корневым сертификатам, которые необходимо прописать в образе. Задаются через пробел или перенос строки.

        Например:

        ROOT_CERTS="http://demo_org.ru/public_certs/demo_org-ca.crt http://demo_org.ru/public_certs/demo_org-intermediate.crt"

      • REGISTRY - путь к репозиторию создаваемых docker образов (без http, "/" на конце). Если не используется, то нужно оставить пустым.

        Например:

        REGISTRY="demo_org.ru:5000/"

      • TZ - текущий часовой пояс.

        Например:

        TZ="Europe/Samara"

      • APTLY_REPO_NAME - имя apt репозитория.

      • APTLY_REPO_LOGIN - логин к apt репозиторию.

      • APTLY_REPO_PASSWORD - пароль к apt репозиторию.

        Например:

        APTLY_REPO_NAME="https://demo_org.ru/repo/"

        APTLY_REPO_LOGIN="login"

        APTLY_REPO_PASSWORD="password"

    • Перейти в каталог users/builds/application_name.

    • Задать значения переменных в файле .arg (В шаблоне .arg.tmpl данны подсказки по заполнению тэгов.)

      • OS_TAG - это тэг образа операционной системы, которую выбирается за основу. Если тэг не указывать, то берется ОС из dockerfile.
        • Рекомендуется сначала собрать образ ОС с предустановленными приложениями и русским языком из шаблона "OS System" (docker/os/linux_deb/build/dockerfile), и передать в переменную OS_TAG имя этого образа.
      • INSTALL_MODE - Переменная режима установки. Можно задать 3 значения:
        • install_from_file - режим установки из файла.
          • INSTALL_FILES - Имена устанавливаемых файлов, перечисленные через пробел или перенос строки. Данные файлы необходимо поместить в каталог users/builds/application_name/distr.

            Например:

            INSTALL_FILES="licenceserver-3.0.39-12400.amd64.deb licenceaddin-3.0.39-12400.amd64.deb"

        • install_from_repo - режим установки из реестра пакетов. Если в вашей инфраструктуре настроен apt репозиторий, из которых можно получить нужные пакеты. Параметры аутентификации для apt репозитория задаются в docker/users/builds/common_context/.arg.
          • APTLY_REPO_COMPONENTS - параметры публикации пакетов во внешнем репозитории, которые указываются в разделе Components в файле /etc/apt/sources.list.
          • INSTALL_PACKS - имена устанавливаемых пакетов с указанной версией, перечисленные через пробел или перенос строки.

            Например:

            APTLY_REPO_COMPONENTS= INSTALL_PACKS="licenceserver=3.0.39.12400 licenceaddin=3.0.39.12400"

        • install_from_url - режим получения пакетов осуществляется по URL ссылке.
      • Прочие переменные.
      • *_TAG - Переменная тэга собираемого образа (например, OC_TAG, OC_ANS_TAG) в большинстве случаев генерируется автоматически в .arg по прочим заданным переменным.
    • Запустить сборку с помощью скрипта docker-build.sh.

      В случае режима install_from_file файлы из каталога users/builds/application_name/distr на время сборки образа будут скопированы в каталог context соответствующего шаблона образа.

  • Развертывание контейнера в режиме compose

    • Перейти в каталог users/compose/application_name.
    • Задать значения переменных через файл .env
    • Развернуть среду с помощью скрипта docker-compose-up.sh
    • Проанализировать логи с помощью скрипта docker-compose-logs.sh
    • Свернуть среду с помощью скрипта docker-compose-down.sh
  • Развертывание контейнера в режиме swarm (в работе...)

Порядок работы с Portainer

  • Запуск осуществляется через web-интерфейс платформы для управления контейнерами Portainer.
  • В настройках запуска можно указать как один compose файл, так и несколько.
    • При этом указание файла common-compose.yml обязательно, там находятся основные параметры сервиса

  • Список параметров запуска приложения и значения переменных среды можно получить из файлов .env.tmpl.

Warning

В настройках переменных среды в диалоговом окне portainer ОБЯЗАТЕЛЬНО убрать все кавычки, которые есть в .env.tmpl. Унификация этого вопроса исследуется.

Особенности оформления dockerfile

Монтирование скриптов

RUN --mount=from=context,target=/context

Чтобы не передавать скрипты в образ с помощью секции COPY монтируется каталог со скриптами в секции RUN с помощью параметра --mount. Благодаря чему, уменьшается число слоев.

Без лишних вопросов

ARG DEBIAN_FRONTEND=noninteractive

Переменная среды DEBIAN_FRONTEND выставляется в неинтерактивный режим, чтобы избежать предупреждений вида: TERM is not set, so the dialog frontend is not usable.

Развитие репозитория

Репозиторий на текущем этапе развития не претендует на полноту описания. Его развитие будет идти по мере изучения новых механизмов и оптимизации изученных раннее. За любую помощь в дополнении или развития текущих файлов настроек автор репозитория будет очень благодарен.

Содержание

(Описание дополняется...)

About

Скрипты, dockerfiles, файлы compose, инструкции для организации информационного контура для работы со стеком приложений 1С

Topics

Resources

Stars

Watchers

Forks

Contributors