Directusはデータベースとの連携性が高いヘッドレスCMSです。
本来CMSの一種なのでブログ系のサイトを構築するのに向いているのですが、データベースの情報をREST APIとして公開するためのフレームワークとしても使えそうです。というかこっちの用途で期待しています。
docker-compose.yaml
ほぼ公式サイトのサンプルそのままですが、アップロードした画像がdocker内に保存されてしまう問題があったので、ホスト側に保存されるよう修正しています。
KEYとSECRETはuuidgenコマンドで生成したものに書き換えておくと良いでしょう。
ADMIN_EMAILとADMIN_PASSWORDはお好きなものに変更してください。
参考:Installing with Docker | Directus Docs
version: '3.2'
services:
database:
container_name: database
image: postgres:12
volumes:
- ./data/database:/var/lib/postgresql/data
networks:
- directus
environment:
POSTGRES_USER: 'directus'
POSTGRES_PASSWORD: 'directus'
POSTGRES_DB: 'directus'
cache:
container_name: cache
image: redis:6
networks:
- directus
directus:
container_name: directus
image: directus/directus:v9.0.0-rc.51
volumes:
- ./data/uploads:/directus/uploads
ports:
- 8055:8055
networks:
- directus
depends_on:
- cache
- database
environment:
KEY: '255d861b-5ea1-5996-9aa3-922530ec40b1'
SECRET: '6116487b-cda1-52c2-b5b5-c8022c45e263'
DB_CLIENT: 'pg'
DB_HOST: 'database'
DB_PORT: '5432'
DB_DATABASE: 'directus'
DB_USER: 'directus'
DB_PASSWORD: 'directus'
CACHE_ENABLED: 'true'
CACHE_STORE: 'redis'
CACHE_REDIS: 'redis://cache:6379'
ADMIN_EMAIL: 'admin@example.com'
ADMIN_PASSWORD: 'd1r3ctu5'
networks:
directus:
起動
以下のように起動します。
$ docker-compose up -d
表示
ブラウザから http://localhost:8055/ にアクセスすると、初期画面が表示されます。

ADMIN_EMAIL、ADMIN _PASSWORDに設定した値を入力するとログインできます。
おわりに
スマホアプリのサーバ側って本質的にはデータベースなのですが、データベースのアクセス制御はテーブル単位なので、データベースをアプリに丸ごと公開するわけにはいきません。
そこで通常はPHPなどでデータベースとスマホアプリの橋渡しとなるアプリケーションを書くんじゃないかと思います。橋渡しに期待したい役割は「クエリとJSONの相互変換」「適切なフィルタリング」といったところですが、それにしては書くコードが過剰なんです。大体ベタ書きはしないので、モデルやコントローラを書くでしょうし、フレームワークも何か採用するでしょうから、その周辺の知識も求められます。例えばLaravelであればマイグレーションを理解してモデルやコントローラ、ルーティングも理解して、artisanコマンドも覚えて・・・。まぁViewがない分楽ではあるのですが、役割からすると過剰です。
Directusを使えばロールにフィルタルールを書くだけで上記が実現できてしまいます。絶対早いよね。これからもDirectusの使い方について発信していきますのでよろしくお願いいたします。