Перейти к содержанию

Настройка и запуск приложения "Первая Форма" в Docker Compose

Введение в архитектуру приложения и ключевые сервисы

Первая Форма — это приложение, состоящее из нескольких взаимодействующих сервисов. Основу архитектуры составляют два главных контейнера — 1f-spa и 1f-core, а также дополнительные вспомогательные сервисы и интеграции. Ниже перечислены ключевые компоненты системы:

1F-CORE (Backend) — сервер приложений на .NET, реализующий API и бизнес-логику системы. Он обрабатывает запросы от фронтенда, взаимодействует с базой данных и выполняет фоновые задачи (при включении режима job-сервера).

1F-SPA (Frontend) — одностраничное веб-приложение (Angular) с интерфейсом системы. Поставляется вместе с веб-сервером Nginx для раздачи статического контента (HTML, JS, CSS) и, при необходимости, проксирования запросов к backend. SPA может работать в двух режимах: Standalone (только статика, без прокси) и Reverse Proxy (статика + проксирование API на Core).

1F-DBDeploy (Migration Service) — вспомогательный сервис миграции базы данных. Однократно запускается перед стартом backend, читает SQL-скрипты обновлений из заданной директории и применяет их к базе данных (MSSQL или PostgreSQL). Обеспечивает актуальное состояние схемы БД для 1F-CORE.

База данных — СУБД, используемая приложением для хранения данных. Поддерживаются Microsoft SQL Server или PostgreSQL. Вы можете развернуть СУБД в контейнере (например, официальный образ Postgres) либо использовать существующую серверную базу.

Опционально: OnlyOffice Docs — сервер совместного редактирования документов (OnlyOffice Document Server) для онлайн-просмотра и редактирования файлов из "Первой Формы". Интегрируется через REST API и проксируется фронтендом. Требует отдельного контейнера или сервера с настроенным JWT-секретом (см. раздел ниже).

Опционально: Matomo — платформа веб-аналитики с открытым кодом. Может использоваться для сбора статистики использования "Первой Формы" (просмотры страниц, действия пользователей и т.д.). Интеграция осуществляется через добавление соответствующих настроек Matomo в конфигурацию приложения (CustomSettings) и деплой сервиса Matomo.

Опционально: MinIO/S3 хранилище — объектное хранилище, совместимое с AWS S3, для сохранения загружаемых файлов.

Опционально: Redis — для масштабирования SignalR в .NET-приложении (бэкенде) "Первая Форма" необходимо использовать Redis как бэкплейн.

Ниже приведена подробная инструкция по настройке каждого компонента в Docker Compose, включая конфигурацию переменных окружения, сетевых подключений, томов данных и последовательность запуска сервисов.

Важно! Для корректной работы приложения "Первая Форма" необходимо опубликовать его по HTTPS. При использовании единственной ноды необходимо настроить frontend для доступа по HTTPS. При использовании нескольких нод и балансировщика нагрузки можно опубликовать приложение по HTTP на веб-серверах и настроить SSL-терминирование на балансировщике. Для балансировки нагрузки рекомендуется использовать Nginx.

Минимальные требования к серверу Linux

  • 4 vCPU

  • 8GB RAM

  • 35GB Storage

  • Операционная система Linux с поддержкой Docker Engine версии 24 и выше

  • Docker Compose версии 2.17 и выше

Подготовка сервера Linux включает установку последней версии Docker и Docker Compose. Рекомендуется использовать инструкцию официального сайта Docker.

Настройка доступа и получение файлов конфигурации

Необходимые для запуска приложения образы Docker находятся в приватном Docker Registry. Для получения доступа к данному registry необходимо пройти авторизацию. Учётные данные для входа запросите у сотрудников компании "Первая Форма".

Для авторизации используйте команду docker login и введите полученные учётные данные:

docker login docker.1forma.ru

После успешной авторизации появится сообщение: Login Succeeded. Компания "Первая Форма" распространяет комплект необходимых файлов в виде архива

(например, 1forma-compose.zip ).

Вы можете скачать архив с конфигурационными файлами с ресурсов "Первая Форма" по ссылке: https://download.1forma.ru/raw-1f-app/configurations/1forma-compose.zip.

Например:

wget --user USERNAME --ask-password https://download.1forma.ru/raw-1f-app/configurations/1forma-compose.zip

Запуск приложения

Прежде чем запускать Docker Compose, необходимо подготовить файлы конфигурации и окружение. Содержимое архива нужно распаковать в целевой каталог на сервере. Рекомендуемый путь — /opt/1forma, но вы можете выбрать и другой:

unzip 1forma-compose.zip -d /opt/1forma

Файл docker-compose.yml содержит описание всех контейнеров, сетей и томов. Файл env.example — шаблон с переменными окружения и описаниями, предоставленный разработчиками. На основе него необходимо создать рабочий файл .env. Создайте файл .env: перейдите в папку проекта и выполните команду:

cp env.example .env

Внутри .env могут быть перечислены десятки параметров настройки. Многие имеют значение по умолчанию — достаточно настроить ключевые, остальные можно оставить без изменений.

Обязательные к настройке переменные (минимум для успешного запуска):

  • Версии образов: CORE_VERSION и SPA_VERSION — укажите версии Docker-образов бэкенда и фронтенда, которые вы собираетесь запускать. Эти версии должны соответствовать скачанным/доступным образам в registry.

  • Параметры базы данных: CORE_DB_TYPE, CORE_DB_SERVER, CORE_DB_NAME, DB_NAME, CORE_DB_USER, CORE_DB_PASSWORD. Эти параметры должны быть выставлены согласно вашей базе данных.

  • Параметры Rebus: REBUS_DB_USER, REBUS_DB_PASSWORD.

  • Имя экземпляра: CORE_APPLICATION_INSTANCE_ID — уникальный идентификатор экземпляра (без пробелов и дефисов, можно буквы, цифры, _ ).

  • Параметры подключения к БД dbDeploy.

  • Режим работы 1f-spa и URL проксирования при необходимости: SPA_STANDALONE  SPA_PROXY_CORE_URL  SPA_PROXY_ONLYOFFICE_URL.

Обратитесь к документации сервисов для получения расширенного описания.

Запустите приложение:

docker compose up -d

Для остановки Docker Compose выполните команду:

docker compose down

Для обновления приложения укажите соответствующие версии CORE_VERSION и SPA_VERSION и запустите приложение:

docker compose up -d

После этого Docker загрузит новые образы из Registry "Первой Формы" и перезапустит контейнеры автоматически.

Для загрузки Docker Image вручную используйте команду docker pull.

Удаление старых образов

После обновления приложения "Первой Формы" на сервере могут оставаться неиспользуемые старые Docker Images.

Для просмотра всех образов на сервере выполните команду:

docker images

Для удаления неиспользуемых образов выполните:

docker rmi IMAGE\_ID