Skip to main content

Установка и обновление через Docker

Каждый релиз — это самодостаточный архив, который включает docker-compose.yml и все необходимые Docker-образы с сервисами Moodrec. Для запуска требуются только Docker и Docker Compose. Параметры сервисов (порты, пароли, домен и т.д.) задаются через единый файл .env, который создаётся автоматически при первом запуске. Все компоненты работают в изолированной Docker-сети — наружу открыты только порты веб-интерфейса (по умолчанию 80 и 443).

Требования

Перед началом убедитесь, что на сервере установлены:

  • Docker версии 20.10 или выше
  • Docker Compose версии 2.0 или выше (плагин docker compose)

Если Docker ещё не установлен, воспользуйтесь официальной инструкцией.


Быстрый старт

1. Скачайте релиз

Загрузите архив нужной версии и создайте директорию для установки:

bash
curl -L -o release-1.0.0.tar.gz https://moodrec-download.example/release-1.0.0.tar.gz

2. Распакуйте архив

Распакуйте архив в директорию новой версии:

bash
mkdir -p /opt/moodrec/releases/1.0.0
tar -xf release-1.0.0.tar.gz -C /opt/moodrec/releases/1.0.0 --strip-components=1

3. Запустите установку

Запустите установку при помощи команд:

bash
cd /opt/moodrec/releases/1.0.0
./moodrec.sh deploy

При первом запуске Moodrec автоматически:

  • создаст файл конфигурации /opt/moodrec/shared/.env на основе шаблона,
  • сгенерирует безопасные пароли для всех сервисов,
  • загрузит Docker-образы и запустит все компоненты.

4. Проверьте запуск

Проверьте, какие сервисы были запущены:

bash
docker compose -p moodrec ps --format "table {{.Name}}\t{{.Image}}\t{{.Command}}\t{{.Service}}\t{{.Ports}}"

Пример вывода:

text
NAME                 IMAGE                               COMMAND                  SERVICE      PORTS                                          <no value>
moodrec-audience moodrec/audience:1.0.0-5997570 "/opt/moodrec/bin/au…" audience
moodrec-auth moodrec/auth:1.0.0-5997570 "/opt/moodrec/bin/au…" auth
moodrec-catboss moodrec/catboss:1.0.0-5997570 "/opt/moodrec/bin/ca…" catboss
moodrec-clickhouse clickhouse/clickhouse-server:25.8 "/entrypoint.sh" clickhouse 8123/tcp, 9000/tcp, 9009/tcp healthy
moodrec-events moodrec/events:1.0.0-5997570 "/opt/moodrec/bin/ev…" events
moodrec-gateway moodrec/gateway:1.0.0-5997570 "/opt/moodrec/bin/ga…" gateway
moodrec-kafka confluentinc/cp-kafka:7.7.7 "/etc/confluent/dock…" kafka 9092/tcp healthy
moodrec-kvrocks apache/kvrocks:latest "kvrocks -c /var/lib…" kvrocks 6666/tcp healthy
moodrec-mongo mongo:8.0.17 "docker-entrypoint.s…" mongo 27017/tcp healthy
moodrec-offers moodrec/offers:1.0.0-5997570 "/opt/moodrec/bin/of…" offers
moodrec-tasks moodrec/tasks:1.0.0-5997570 "/opt/moodrec/bin/ta…" tasks
moodrec-trans moodrec/trans:1.0.0-5997570 "/opt/moodrec/bin/tr…" trans
moodrec-ui moodrec/ui:1.0.0-5997570 "/docker-entrypoint.…" ui 127.0.0.1:80->80/tcp, 127.0.0.1:443->443/tcp
moodrec-vectors moodrec/vectors:1.0.0-5997570 "/opt/moodrec/bin/ve…" vectors

Проверьте, какие тома были созданы:

bash
docker volume ls --filter name=moodrec

Пример вывода:

text
DRIVER    VOLUME NAME
local moodrec_clickhouse-data
local moodrec_kafka-data
local moodrec_kafka-secrets
local moodrec_kvrocks_data
local moodrec_mongodb-configdb
local moodrec_mongodb-data
local moodrec_nginx-acme-state
local moodrec_vectors-index

Откройте файл /opt/moodrec/shared/.env и проверьте настройки. Здесь хранятся все параметры окружения — адреса, порты, ключи интеграций и прочее. Значения по умолчанию подходят для большинства случаев, но вы можете изменить их под свои нужды.


Структура на сервере

После установки на сервере появится следующая структура:

text
/opt/moodrec/
├── current → releases/1.0.0 # симлинк на активную версию
├── releases/
│ ├── 1.0.0/ # файлы текущей версии
│ └── ... # предыдущие версии
└── shared/
└── .env # конфигурация (общая для всех версий)

Каждая версия хранится в отдельной папке. Конфигурация — общая и не удаляется при обновлении.


Обновление

Процесс обновления почти не отличается от первой установки.

Сперва необходимо скачать архив с новой версией:

bash
curl -L -o release-1.1.0.tar.gz https://releases.example.com/moodrec/release-1.1.0.tar.gz

Затем распакуйте архив в новую директорию:

bash
mkdir -p /opt/moodrec/releases/1.1.0
tar -xf release-1.1.0.tar.gz -C /opt/moodrec/releases/1.1.0 --strip-components=1

Запустите деплой:

bash
cd /opt/moodrec/releases/1.1.0
./moodrec.sh deploy

При обновлении ваш файл /opt/moodrec/shared/.env сохраняется. Если в новой версии появились новые параметры, они будут добавлены автоматически со значениями по умолчанию.


Откат на предыдущую версию

Если что-то пошло не так, вы можете быстро вернуться на любую предыдущую версию:

bash
cd /opt/moodrec/releases/1.0.0
./moodrec.sh deploy

Конфигурация останется прежней — переключатся только сервисы и Docker-образы.

Важно

Откат не отменяет миграции базы данных. Если новая версия изменила схему БД, может потребоваться ручное восстановление данных.


Управление сервисами

Все команды выполняются из директории активной версии:

bash
cd /opt/moodrec/current

./moodrec.sh status # посмотреть состояние сервисов
./moodrec.sh logs # логи всех сервисов
./moodrec.sh logs gateway # логи конкретного сервиса
./moodrec.sh restart # перезапустить всё
./moodrec.sh stop # остановить
./moodrec.sh start # запустить

Или напрямую через Docker Compose:

bash
docker compose -p moodrec ps

Часто возникающие проблемы

Сервис не запускается

Проверьте логи:

bash
./moodrec.sh logs gateway

Как загрузить образы вручную?

bash
cd /opt/moodrec/current
gunzip -c images.tar.gz | docker load

Полный сброс

Сброс удалит все данные и конфигурацию:

bash
docker compose -p moodrec down -v
rm -f /opt/moodrec/shared/.env