В данном репозитории находятся файлы настроек для создания 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 (в работе...)
- Запуск осуществляется через web-интерфейс платформы для управления контейнерами Portainer.
- В настройках запуска можно указать как один compose файл, так и несколько.
-
При этом указание файла
common-compose.ymlобязательно, там находятся основные параметры сервиса
-
- Список параметров запуска приложения и значения переменных среды можно получить из файлов
.env.tmpl.
Warning
В настройках переменных среды в диалоговом окне portainer ОБЯЗАТЕЛЬНО убрать все кавычки, которые есть в .env.tmpl. Унификация этого вопроса исследуется.
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.
Репозиторий на текущем этапе развития не претендует на полноту описания. Его развитие будет идти по мере изучения новых механизмов и оптимизации изученных раннее. За любую помощь в дополнении или развития текущих файлов настроек автор репозитория будет очень благодарен.
(Описание дополняется...)