- Ошибка проверки статуса здоровья для 1С:Элемент в контейнере.
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.
- build - каталог, в котором находятся файлы описания сборки docker-образов
- common_context - каталог с общими скриптами и настройками как для build, так и для compose.
- init.sh - файл инициализации скриптов сборки или запуска контейнеров.
- users - динамически создаваемый каталог с пользовательскими настройками сборки или запуска контейнеров.
- applications - каталоги с файлами настроек под конкретное приложении.
- .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имя этого образа.
- Рекомендуется сначала собрать образ ОС с предустановленными приложениями и русским языком из шаблона "OS System" (docker/os/linux_deb/build/dockerfile), и передать в переменную
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 ссылке.INSTALL_URLS- URL ссылки для получения пакетов, перечисленные через пробел или перенос строки.Например:
INSTALL_URLS="https://licencecenter.ru/downloads/licence/3.0/3.0.39.12400/licence-3.0.39.12400.deb.amd64.zip"
- Прочие переменные.
*_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.
Развитие репозитория
Репозиторий на текущем этапе развития не претендует на полноту описания. Его развитие будет идти по мере изучения новых механизмов и оптимизации изученных раннее. За любую помощь в дополнении или развития текущих файлов настроек автор репозитория будет очень благодарен.
Содержание
(Описание дополняется...)