Общие сведения
Надёжность и безопасность
Термины и определения
Начало работы
Учёт времени
Управление проектами
Инструкции
Управление задачами
Инструкции
Концепции
Компоненты
Управление ресурсами
Управление финансами
Управление затратами
Управление биллингом
Управление клиентами
Настройка и администрирование
Типовой порядок настройки системы
Жизненные циклы и воркфлоу
Отчёты и аналитика
FAQ
Типы отчётов
Использование отчётов
Группировка и суммирование данных источника
Группировка данных в отчёте
Типы виджетов
Общие отчёты и шаблоны
Настройка отчёта
Экспорт отчётов
Пользовательские настройки отчёта
Вычисляемые поля
Выражения вычисляемых полей
Использование панелей мониторинга
Публикация панелей
Фильтры источников данных
On-premises
API
История изменений
Термины и определения

Развёртывание в Docker Сompose

Обновлено: 17.07.2025

Примечание

Kubernetes предназначен для управления контейнеризованными приложениями в крупномасштабных производственных средах. Он поддерживает автоматическое масштабирование, обнаружение сервисов и управление отказами.

Развертывание в Docker-compose затрудняет масштабирование и не обеспечивает отказоустойчивость.

В данном примере рассматривается вариант развертывания всех компонентов системы, включая общесистемные PostgreSQL, Redis, RabbitMQ, на одной виртуальной машине.

Установка Docker Compose

Для установки Docker на ВМ и включения автозагрузки при перезапуске выполните команды:

sudo dnf install docker-ce docker-ce-cli docker-compose
sudo systemctl enable docker --now
sudo systemctl status docker

Подробнее об установке на РЕД ОС — https://redos.red-soft.ru/base/redos-7_3/7_3-administation/7_3-containers/7_3-docker-install/?nocache=1729788973214.

Включите доступ пользователя к сервису:

usermod -aG docker <имя_пользователя>

Для установки Docker на ВМ и включения автозагрузки при перезапуске выполните команды:

sudo apt install docker-compose-v2

Добавить текущего пользователя в группу docker:

 sudo usermod -aG docker $USER

Подробнее об установке — https://docs.astralinux.ru/latest/guide/virtual/docker/compose2/.

Предварительные условия

  1. Если для обращения к сервису планируется использовать доменное имя (например, https://timetta.my-company.com), то требуется создание соответствующий DNS-записей. Альтернатива — обращаться по IP адресу.

  2. Для работы приложения потребуются сертификаты для всех IP адресов и/или доменных имен, по которым будут опубликованы сервисы приложения.

Настройка

Создать папку

Для compose файла и конфигураций создаем папку, например:

sudo mkdir -p /opt/timetta
sudo chown -R $USER:$USER /opt/timetta  # Даём права своему пользователю
cd /opt/timetta

Добавляем файлы конфигурации

В папку надо добавить файлы:

  1. client-settings.json
  2. settings.json
  3. nginx.conf
  4. cert_key.pem — приватный ключ SSL сертификата.
  5. cert_pub.pem — публичный ключ SSL сертификата.
  6. certificate.pfx — используется для Kestrel (веб-сервера).

Если есть приватный и публичный ключи, то создать pfx можно так:

openssl pkcs12 -export -out certificate.pfx -inkey certificate.pem -in certificate.pem

Добавляем compose.yml

Замените op.timetta-test.com на ваше доменное имя или IP адрес. Укажите пароли для Redis, RabbitMQ и прочие параметры.

name: timetta

configs:
  app_settings:
    file: ./settings.json
  client_settings:
    file: ./client-settings.json
  nginx_config:
    file: ./nginx.conf
  certificate_pfx:
    file: ./certificate.pfx
  cert_pub_pem:
    file: ./cert_pub.pem
  cert_key_pem:
    file: ./cert_key.pem

services:
  redis:
    image: redis:latest
    container_name: redis
    restart: always
    ports:
      - "6379:6379"
    volumes:
      - /path/to/local/dаta:/root/redis
      - /path/to/local/redis.conf:/usr/local/etc/redis/redis.conf
    environment:
      - REDIS_PASSWORD=1
      - REDIS_PORT=6379
      - REDIS_DATABASES=16

  rabbitmq:
    container_name: rabbitmq
    image: rabbitmq:latest
    restart: always
    environment:
      - RABBITMQ_DEFAULT_USER=admin
      - RABBITMQ_DEFAULT_PASS=1
    ports:
      - 5672:5672

  api:
    container_name: api
    restart: always
    image: cr.yandex/crpr8bvek949tq2fuqkf/api:latest
    ports:
      - "5400:5400/tcp"
    links:
      - passport:op.timetta-test.com
    environment:
      - ASPNETCORE_URLS=https://*:5400
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_HTTPS_PORTS=5400
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/app/secrets/certificate.pfx
    deploy:
      resources:
        limits:
          cpus: "1"
          memory: 4G
        reservations:
          cpus: "0.5"
          memory: 2G
    configs:
      - source: app_settings
        target: /app/secrets/settings.json
      - source: certificate_pfx
        target: /app/secrets/certificate.pfx

  passport:
    container_name: passport
    image: cr.yandex/crpr8bvek949tq2fuqkf/passport:latest
    ports:
      - "5401:5401/tcp"
    environment:
      - ASPNETCORE_URLS=https://*:5401
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_HTTPS_PORTS=5401
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/app/secrets/certificate.pfx
    configs:
      - source: app_settings
        target: /app/secrets/settings.json
      - source: certificate_pfx
        target: /app/secrets/certificate.pfx

  consumer:
    container_name: consumer
    image: cr.yandex/crpr8bvek949tq2fuqkf/consumer:latest
    ports:
      - "5403:5403/tcp"
    configs:
      - source: app_settings
        target: /app/secrets/settings.json

  scheduler:
    container_name: scheduler
    image: cr.yandex/crpr8bvek949tq2fuqkf/scheduler:latest
    ports:
      - "5406:5406/tcp"
    configs:
      - source: app_settings
        target: /app/secrets/settings.json

  web-socket:
    container_name: web-socket
    image: cr.yandex/crpr8bvek949tq2fuqkf/web-socket-hub:latest
    ports:
      - "5404:5404/tcp"
    environment:
      - ASPNETCORE_URLS=https://*:5404
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_HTTPS_PORTS=5404
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/app/secrets/certificate.pfx
    configs:
      - source: app_settings
        target: /app/secrets/settings.json
      - source: certificate_pfx
        target: /app/secrets/certificate.pfx

  reporting:
    container_name: reporting
    image: cr.yandex/crpr8bvek949tq2fuqkf/reporting:latest
    ports:
      - "5405:5405/tcp"
    environment:
      - ASPNETCORE_URLS=https://*:5405
      - ASPNETCORE_ENVIRONMENT=Production
      - ASPNETCORE_HTTPS_PORTS=5405
      - ASPNETCORE_Kestrel__Certificates__Default__Path=/app/secrets/certificate.pfx
    configs:
      - source: app_settings
        target: /app/secrets/settings.json
      - source: certificate_pfx
        target: /app/secrets/certificate.pfx

  client:
    container_name: client
    image: cr.yandex/crpr8bvek949tq2fuqkf/client-host:latest
    ports:
      - "443:443/tcp"
    deploy:
      update_config:
        parallelism: 1
        delay: 0s
        order: stop-first
    configs:
      - source: nginx_config
        target: /etc/nginx/nginx.conf
      - source: client_settings
        target: /usr/share/nginx/html/assets/config.json
      - source: cert_key_pem
        target: /etc/nginx/cert_key.pem
      - source: cert_pub_pem
        target: /etc/nginx/cert_pub.pem


Запуск

docker compose up -d --force-recreate

Первичная настройка Timetta

Структура БД и миграция данных выполняется путём обращения к адресу [apiURL]/migrate. После миграции необходимо убедиться в работоспособности приложения.

Содержание

Установка Docker Compose Предварительные условия Настройка Создать папку Добавляем файлы конфигурации Добавляем compose.yml Запуск Первичная настройка Timetta
Ничего не найдено

Перейти на русскую версию?