Деплой Directus. Полная инструкция по развертыванию на сервере

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

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

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

Для развертывания используем сервис Amvera, который позволяет развернуть приложение через простой push в Git (а если не хотите работать с Git, можно загрузить файлы в интерфейсе). Кроме того, этот Amvera предоставляет стартовый баланс на первое время работы вашего сервиса.

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

По умолчанию 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, ознакомьтесь с переменными среды для БД, подходящими к вашей БД.

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

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

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

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

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

Заключение

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

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

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

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

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

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

@VadimMichaylov
21.05.2024 20:19 UTC
Первоисточник

Комментарии

@ovchinnikovproger
21.05.2024 15:22 UTC
0

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

@VadimMichaylov
21.05.2024 15:25 UTC
0

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

@stweet
30.05.2024 06:05 UTC
0

Еще бы разобраться как интегрировать кастомные сервисы в общий стек. В документации я так и н нашел как расширять само ядро системы.