1C-DevOps
Описание
В данном репозитории находятся файлы настроек для создания docker образов и развертывания docker контейнеров приложений, относящихся к разработке на платформах 1С:Предприятие, 1С:Элемент, 1С:Исполнитель.
Структура репозитория
- build_deb - каталог, в котором находятся скрипты сборки deb-пакетов.
- docker - каталог для работы с docker.
- applications - каталоги с файлами настроек под конкретное приложении.
- build - каталог, в котором находятся файлы описания сборки docker-образов
- dockerfile - основной файл описания сборки docker-образа.
- context - каталог со скриптами установки приложений, которые вызываются из dockerfile.
- .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.
Внимание. Без этой программы будет не совсем корректно работать скрипт 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
Порядок работы с репозиторием
-
Инициализация
Для создания образа или запуска контейнера необходимо инициализировать каталог с пользовательскими настройками с помощью скрипта docker/init.sh. При запуске скрипта открывается окно, в котором необходимо:
- Задать имя проекта
- Выбрать тип проекта:
- build
- compose
- swarm (в работе...)
- Выбрать приложение из списка доступных
- Для проекта типа
compose
для некоторых приложений выйдет окно дополнительных настроек, для выбора дополнений функционала развертываемого стека, а именно:- Дополнительные файлы compose, и сопуствующих им файлы настроек
- Данные дополнения возможны для приложений:
- fluentbit
- sonarqube
- После заданий настройка проекта папке users (которая добавлена в
gitignore
) создадутся:- скрипты сборки образа
- обощенный файл аргументов с значениями для сборки
- скрипты разворачивания контейнера
- обощенный файл переменных со значениями для настроек контейнера
-
Сборка образа
- Перейти в каталог
users/builds/application_name
. - Задать значения переменных через файл
.arg
- Запустить сборку с помощью скрипта
docker-build.sh
.
- Перейти в каталог
-
Развертывание контейнера в режиме 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.tpml
.
Важно. В настройках переменных среды в диалоговом окне portainer ОБЯЗАТЕЛЬНО убрать все кавычки, которые есть в
.env.tpml
. Унификация этого вопроса исследуется.
Особенности оформления 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.
Развитие репозитория
Репозиторий на текущем этапе развития не претендует на полноту описания. Его развитие будет идти по мере изучения новых механизмов и оптимизации изученных раннее. За любую помощь в дополнении или развития текущих файлов настроек автор репозитория будет очень благодарен.
Содержание
(Описание дополняется...)