Перейти к основному содержимому

Docker Compose

На данном этапе установщик умеет только запустить Time на одном хосте.

осторожно

Инсталляция в Docker Compose предоставляется в ознакомительных целях: не рекомендуется использовать этот вариант установки в production среде.

  • Нет гарантий отказоустойчивости (все компоненты запускаются на одном хосте)
  • Такая инсталляция не является защищенной — в случае использования на хосте до которого есть прямой доступ из Интернета, требуется дополнительная защита в виде Firewall

Требования к инфраструктуре

Для успешной установки и работы Time к инфраструктуре предъявляется ряд требований:

  • Поддерживаются ОС:
    • Ubuntu >= v20.04
    • Astra Linux >= v2.12.45
  • sudo (наличие утилиты и права на повышение привилегий)
  • GNU shell >= v4
  • zip
  • unzip
  • scp
  • apt
  • Docker CE >= v20 (опционально)
  • Docker Compose >= v3 (опционально)
  • DNS — должен резолвиться и быть доступен на всем пути использования
  • Доступ через интернет к различным ресурсам (docker registry, push-сервисы Apple/Google) — напрямую, либо через прокси
warning

На хосте не должно быть посторонних сервисов!

Схема потоков данных

Ниже — схема потоков данных для варианта установки в Docker Compose (с параметрами и портами по умолчанию):

Docker Compose Scheme

Инструкция по установке

Поместите zip-архив на хосте, где будет выполняться установка, и разархивируйте командой:

unzip time-<ВЕРСИЯ_ИНСТАЛЛЯТОРА>.zip

Подготовка

Перед установкой вам необходимо сгенерировать сертификаты для будущего домена Time для шифрования трафика с помощью TLS (HTTPS/WSS). Например, это можно сделать с помощью сервиса Let's Encrypt:

# установка certbot
sudo apt install certbot python3-certbot-nginx

# генерация сертификата:
sudo certbot --nginx -d my-domain.example.com

Перейдите в папку time-docker-compose (все дальнейшие шаги должны выполняться внутри этой папки):

cd time-docker-compose

В случае использования HTTPS (используется по умолчанию) — вам необходимо получить сертификат и закрытый ключ, и положить их в папку nginx/certs, названия файлов должны быть:

  • certificate.crt — содержит сертификат для домена или всю цепочку сертификатов
  • key.pem — содержит закрытый ключ

Установка и запуск

Зайдите в папку time-docker-compose и запустите установку:

./install.sh

Во время установки инсталлятор в интерактивном режиме запросит всё необходимое, в т.ч.:

  • fqdn-имя хоста/домена, которое используется для формирования Time URL;
  • hash актуальной лицензии;
  • адрес HTTP/HTTPS-прокси — в случае отсутствия прямого доступа в Интернет это нужно для скачивания docker-образов из внешнего registry, а также для корректной работы таким сервисам как time-server (превью ссылок) и time-pns (для отправки push-уведомлений через Apple/Google);
  • включение/отключение HTTPS в Nginx — в случае отключения HTTPS в инсталляторе, вам необходимо самостоятельно настроить свой балансировщик и сконфигурировать в нем адрес http://<имя_вашего_хоста>/ в качестве бэкенда (апстрима), а также настроить HTTPS на вашем балансировщике.

В случае успеха выполнится следующее:

  • установка и настройка Docker & Docker Compose (путем скачивания deb-пакетов);
  • загрузка docker-образов (из внешнего registry);
  • запуск kafka-init — необходимо запустить только один раз для создания топиков в Kafka;
  • запуск s3-init — необходимо запустить только один раз для инициализации s3 хранилища;
  • запуск Time с помощью Docker Compose, будут использованы:
    • docker-compose.yml — основной манифест
    • docker-compose-custom.yml — при наличии этого опционального манифеста, он будет использован для переопределения основного docker-compose.yml
    • docker-compose-resources-c8r16.yml — манифест для ограничения системных ресурсов

В итоге Time будет доступен по адресу: https://<имя_вашего_домена>/

Запуск сервисов

Для создания контейнеров и запуска сервисов Time, выполните скрипт внутри папки time-docker-compose:

./docker-compose.sh up --detach

Для запуска сервисов Time, которые уже были созданы ранее, выполните скрипт внутри папки time-dockercompose:

./docker-compose.sh start

В результате должны быть доступны сервисы:

СервисЭндпоинт/ ПортНазначение
time-front (Nginx)https://<имя_вашего_ДОМЕНА>/веб-сервер + time-front (веб-приложение Time) + балансировщик — также может использоваться для терминирования TLS (HTTPS + WSS), в зависимости от выбора во время установки может принимать запросы на TCP 80 (HTTP+WS) или TCP 443 (HTTPS+WSS)
time-serverhttp://time-server.local:8065/веб-интерфейс Time (доступен в браузере), а также websocket (для обмена сообщениями между браузером и веб-сервером, используя постоянное соединение)
slack-time-proxyhttps://<имя_вашего_ДОМЕНА>/slack-time-proxyREST-запросы, а также для websocket (обмен сообщениями между браузером и веб-сервером, используя постоянное соединение)
https://<имя_вашего_ДОМЕНА>/slack-time-proxy/webhookэндпоинт для вебхуков
https://<имя_вашего_ДОМЕНА>/slack-time-proxy/websocketэндпоинт для веб-сокетов
warning

Имя вашего домена (внутреннего или внешнего) может отличаться от имени хоста (виртуалки), на котором развернуты сервисы Time.

Остановка сервисов

Чтобы остановить ранее запущенные сервисы Time, выполните скрипт внутри папки time-docker-compose:

./docker-compose.sh stop

Удаление сервисов

Чтобы удалить ранее созданные сервисы Time, выполните скрипт внутри папки time-docker-compose:

./docker-compose.sh down
warning

Это может удалить часть данных в сервисах Time!

Инструкция по деинсталляции

В случае, когда необходимо полностью переустановить Time вместе со всеми компонетами — запустите скрипт внутри папки time-docker-compose:

./uninstall.sh

Скрипт остановит все сервисы, удалит образы и контейнеры, а также деинсталлирует все ранее установленные пакеты.

осторожно

Это полностью удалить ВСЕ данные в сервисах Time!