387c3c4cfa
Phase 1 task 1.1 lands. Directus 11.17.4 boots locally end-to-end against a TimescaleDB+PostGIS container; admin UI serves at :8055, admin bootstrap from env vars works, named volumes preserve data across down/up cycles. Scaffold: - Dockerfile — FROM directus/directus:11.17.4. Pre-installs postgresql16-client (ahead of task 1.2's db-init runner needing psql). Bakes in /directus/snapshots, /directus/db-init, /directus/scripts, /directus/extensions, /directus/entrypoint.sh. - compose.dev.yaml — db (timescale/timescaledb-ha:pg16.6-ts2.17.2-all) + directus (local build), healthchecks, named volumes directus-pg-data + directus-uploads. - entrypoint.sh — placeholder using upstream's actual flow (node cli.js bootstrap && pm2-runtime start ecosystem.config.cjs); the real db-init -> schema apply -> start wrapper lands in task 1.7. - package.json — scripts-only (dev, dev:down, dev:reset, schema:snapshot, schema:apply, db:init), no runtime deps. - .env.example — sectioned, fully documented, KEY/SECRET marked required with generation hints. - .gitignore, .dockerignore — match the processor service conventions. - snapshots/, db-init/, scripts/, extensions/ — empty with .gitkeep, filled by later Phase 1 tasks (1.3, 1.6) and Phase 5. Lessons locked in (against the empirical pnpm dev boot): - timescale/timescaledb-ha:pg16-latest does NOT exist on Docker Hub. Pin a concrete version (we used pg16.6-ts2.17.2-all). - This image's data directory is /home/postgres/pgdata/data, not /pgdata or /var/lib/postgresql/data. PGDATA env var and the volume mount must both target it. - The -all variant bundles PostGIS binaries but the extension is not auto-created on the directus database; CREATE EXTENSION lands in Phase 2 alongside the geofences/SLZs/waypoints collections. - The upstream image's CMD is bootstrap + pm2-runtime, not a simple cli.js start. Bypassing pm2 would lose crash recovery. These corrections folded into 01-project-scaffold.md (deliverable line + Done section), 08-gitea-ci-dryrun.md (CI service tag), and the inline comments in compose.dev.yaml so future implementers don't re-discover them. Status: ROADMAP marks 1.1 done, Phase 1 in progress, 1.2 next.
25 lines
962 B
Bash
25 lines
962 B
Bash
#!/bin/sh
|
|
# TRM directus — image entrypoint (placeholder).
|
|
#
|
|
# Real flow (db-init runner → directus schema apply --yes → directus start)
|
|
# lands in Phase 1 task 1.7. Until then, this script replicates the upstream
|
|
# Directus image CMD so the container boots normally during tasks 1.4 and 1.5
|
|
# (admin UI schema work).
|
|
#
|
|
# Upstream CMD (from directus/directus:11.17.4 Dockerfile):
|
|
# node cli.js bootstrap && pm2-runtime start ecosystem.config.cjs
|
|
#
|
|
# bootstrap: idempotent — initialises the DB schema on first run, reads
|
|
# ADMIN_EMAIL / ADMIN_PASSWORD to create the initial admin user.
|
|
# pm2-runtime: starts the Directus process under PM2 so the container stays
|
|
# alive and restarts on crash without an outer supervisor.
|
|
#
|
|
# Exit codes are propagated: any non-zero exit causes the container to exit
|
|
# with that code, which compose reports as an error.
|
|
|
|
set -e
|
|
|
|
node /directus/cli.js bootstrap
|
|
|
|
exec pm2-runtime start /directus/ecosystem.config.cjs
|