Директус — это платформа, которую можно использовать как автономную CMS, API или Backend‑as‑a-Service (BaaS) для других приложений. Directus является расширяемым и может быть интегрирован со многими различными интерфейсными технологиями для создания стабильной, хорошо структурированной разработки и пользовательского опыта.

При этом его развертывание может быть нетривиальной задачей. В статье мы дадим подробную инструкцию, как осуществить деплой Directus на сервер.

Для начала нам потребуется:

  • Любой S3 сервис. Для данного примера возьмем Backblaze, но вы можете создать bucket и у другого провайдера.

  • Аккаунт Amvera для развертывания Directus.io

Создание бакета объектного хранилища

По умолчанию Directus сохраняет загруженные файлы и другие файловые объекты в локальной файловой системе, где работает приложение. В среде без серверов это хранилище является временным и будет утеряно при повторном развертывании или перенастройке приложения. Чтобы избежать потери данных, настроим Directus таким образом, чтобы эти объекты сохранялись во внешнем хранилище объектов. Для этой цели мы будем использовать S3-хранилище.

  1. Войдите в свою учетную запись Backblaze (или другого провайдера, тут на ваш выбор)

  2. Создайте Bucket

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

Пример:

STORAGE_S3_BUCKET = "mydirectusapp"

STORAGE_S3_ENDPOINT = "s3.us-west-002.backblazeb2.com"

Далее перейдем в раздел Account и выберем Application keys

  1. Нажмите Add a new application key

  2. Выберите название, остальные настройки оставьте по умолчанию

  3. Нажмите Create New key

После создания ключа, вы увидите уведомление. Сохраните значения keyID и applicationKey так как после они будут недоступны.

После, в переменных среды, STORAGE_S3_KEY примет значение keyID, а STORAGE_S3_SECRET значение applicationKey.

Развертывание Directus в Amvera через Dockerfile

  1. Войдите в свою учетную запись Amvera.

  2. Создайте новый проект.
    Выберите название и тип проекта Приложение и тариф выше Начального, это нужно для нормального поддержания жизнедеятельности проекта.

Создайте на рабочем столе ПК файл Dockerfile и вставьте внутрь следующий код:

FROM directus/directus:10.8.1

USER root
RUN apk --no-cache add procps
USER node

ENV PIDUSAGE_USE_PS=true

Загрузите файл в репозиторий проекта Amvera.

  1. Выберите окружение Docker
    В разде run измените значение image на directus/directus (так позиционируется образ Directus в DockerHub). Если вам требуется конкретная версия directus, то добавьте версию через " : ".
    Также измените значение containerPort на 8055, под таким портом запускается приложение Directus.

  2. Ваш yaml файл будет выглядеть следующим образом

---
meta:
  environment: docker
  toolchain:
    name: docker
    version: latest
build:
  dockerfile: Dockerfile
run:
  persistenceMount: /data
  image: directus/directus
  containerPort: 8055

Загрузите данный amvera.yaml или задайте его через конфигуратор.

Далее в панели управления проектом найдите раздел Переменные и пропишите там следующие переменные среды:

KEY=

SECRET=

DB_CLIENT="sqlite3"

DB_FILENAME="/data/database.db"

STORAGE_LOCATIONS="s3"

STORAGE_S3_DRIVER="s3"

STORAGE_S3_KEY=

STORAGE_S3_SECRET=

STORAGE_S3_BUCKET=

STORAGE_S3_ENDPOINT=

STORAGE_S3_REGION=

CACHE_ENABLED="true"

CACHE_AUTO_PURGE="true"

CACHE_STORE="memory"

SYNCHRONIZATION_STORE="memory"

PUBLIC_URL=

ADMIN_EMAIL=

ADMIN_PASSWORD=

Да, их много, но это особенность данного приложения

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

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

Установите значения переменных для ссылки на вашу собственную информацию следующим образом:

  • KEY: уникальная строка, которая служит идентификатором текущего проекта. Задается случайное число

  • SECRET: уникальная строка, используемая для подписи веб-токенов JSON для аутентификации. Задается случайное число

  • DB_CLIENT: установите sqlite3 для указания базы данных SQLite3.

  • DB_FILENAME: установите путь к файлу БД. Важно, чтобы база данных находилась в постоянном хранилище /data. Соответственно, путь будет /data/имя файла

  • STORAGE_LOCATIONS: имя настраиваемого места хранения. Это будет использоваться как часть других переменных, используемых для его настройки. Присвойте переменной значение s3.

  • STORAGE_S3_DRIVER: Драйвер, который будет использоваться в качестве места хранения. Присвойте переменной значение s3.

  • STORAGE_S3_KEY: Идентификатор ключа API для аутентификации в Backblaze.

  • STORAGE_S3_SECRET: Секретный ключ API для аутентификации в Backblaze.

  • STORAGE_S3_BUCKET: имя вашего бакета Backblaze B2.

  • STORAGE_S3_ENDPOINT: URL-адрес конечной точки Backblaze B2. Это должно выглядеть примерно так s3.us-west-002.backblazeb2.com.

  • STORAGE_S3_REGION: название региона, в котором доступен доступ к вашей корзине Backblaze B2. Это часть URL-адреса конечной точки. Для указанной выше конечной точки регион будет us-west-002.

  • CACHE_ENABLED: установите значение true, чтобы включить кэширование.

  • CACHE_AUTO_PURGE: установите значение true для автоматической очистки кэша при манипуляциях с данными.

  • CACHE_STORE: Установите значение memory

  • SYNCRHONIZATION_STORE: Установите значение memory

  • PUBLIC_URL: установите общедоступный URL-адрес, по которому будет работать служба Directus.
    В разделе Настройки панели управления проектом Amvera включите дефолтное доменное имя, скопируйте и вставьте его как значение переменной PUBLIC_URL

  • ADMIN_EMAIL: укажите адрес электронной почты, который вы хотите использовать для аутентификации в учетной записи администратора Directus.

  • ADMIN_PASSWORD: установите пароль, который вы хотите использовать для аутентификации в учетной записи администратора Directus.

После того, как мы добавили Dockerfile и прописали переменные среды, начнем сборку проекта.

Автоматически после сборки начнется развертывание.

За процессом развертывания вы можете наблюдать в логах приложения.

После успешного развертывания со статусом Приложение запущено служба Directus будет доступна по URL-адресу, указанному ранее.

Заключение

В статье мы показали, как развернуть и настроить Directus в Amvera для создания серверной части данных для приложений. Для хранения постоянных данных мы используем базу данных SQLite, что позволяет не создавать (и не оплачивать) хостинг отдельного проекта для БД. Дополнительно используется Bucket объектного хранилища для управления пользовательскими загрузками и другими объектами типа файлов. 

Если резюмировать, для развертывания Directus нужно

  1. Загрузить в репозиторий Amvera Dockerfile. Пример конфигурационных файлов подкатом.

  2. Использовать S3

  3. Прописать достаточно большое количество переменных в разделе Переменные.

Но если не брать в расчет рутинные операции, c деплоем Directus можно справиться без существенных усилий.

Комментарии (2)


  1. ovchinnikovproger
    21.05.2024 15:22

    В другой инструкции еще встречал, что для него нужно отдельно поднимать PostgreSQL


    1. VadimMichaylov Автор
      21.05.2024 15:22

      Можно и PostgreSQl, но это будут отдельные затраты на хостинг. В статье SQLite для этого, его вполне должно хватить. И это встраиваемая база, не требует отдельных проектов и весьма легковесна. Но все конечно зависит от вашей задачи