feat: package calendar bootstrap tool
This commit is contained in:
12
README.md
12
README.md
@@ -38,11 +38,11 @@ cp frontend/.env.production.example frontend/.env
|
||||
chmod 600 .env backend/.env frontend/.env
|
||||
```
|
||||
|
||||
Replace every `change-me` value. Generate URL-safe secrets with `openssl rand -hex 32`. The root file owns the PostgreSQL and Redis passwords; Compose injects their connection settings into the Go containers. The frontend file contains public build-time switches only.
|
||||
Replace every `change-me` value. Generate URL-safe secrets with `openssl rand -hex 32`. The root file owns the PostgreSQL and Redis passwords plus the reviewed-calendar path and non-secret audit identities; Compose injects their connection settings into the Go containers. The frontend file contains public build-time switches only.
|
||||
|
||||
## First production start
|
||||
|
||||
Before adding/reloading the Caddy route, validate and build the stack, import the immutable dataset, create the demo account, and only then start the public upstreams:
|
||||
Before adding/reloading the Caddy route, place the independently reviewed calendar JSON at `CALENDAR_FILE`, make it read-only, and confirm that its `sourceChecksum` is not a review placeholder. Then validate and build the stack, import the immutable dataset, bootstrap the reviewed calendar, create the demo account, and only then start the public upstreams:
|
||||
|
||||
```bash
|
||||
docker compose config --quiet
|
||||
@@ -50,6 +50,7 @@ docker compose build backend frontend
|
||||
docker compose up -d postgres redis
|
||||
docker compose --profile tools run --rm migrate
|
||||
docker compose --profile import run --rm importer
|
||||
docker compose --profile tools run --rm calendar
|
||||
docker compose --profile tools run --rm admin
|
||||
docker compose up -d backend worker frontend
|
||||
docker compose ps
|
||||
@@ -68,18 +69,19 @@ git -C frontend pull --ff-only origin main
|
||||
bash scripts/deploy.sh
|
||||
```
|
||||
|
||||
Normal deploys run migrations but never run the importer or admin command.
|
||||
Normal deploys run migrations but never run the importer, calendar bootstrap, or admin command.
|
||||
|
||||
## Re-running one-off tools
|
||||
|
||||
`IMPORT_FILE` in the root `.env` is the absolute host path of the immutable `challenge_data.csv.gz`. If recovery requires the idempotent importer or the demo account must be reset, run them explicitly:
|
||||
`IMPORT_FILE` in the root `.env` is the absolute host path of the immutable `challenge_data.csv.gz`; `CALENDAR_FILE` is the absolute path of the reviewed JSON catalog. If recovery requires an idempotent data/catalog bootstrap or the demo account must be reset, run the applicable command explicitly:
|
||||
|
||||
```bash
|
||||
docker compose --profile import run --rm importer
|
||||
docker compose --profile tools run --rm calendar
|
||||
docker compose --profile tools run --rm admin
|
||||
```
|
||||
|
||||
Both commands are explicit one-offs. Re-running the importer relies on the backend's checksum-based idempotency guard.
|
||||
All three commands are explicit one-offs. Calendar bootstrap resumes the same reviewed version safely and rejects placeholder checksums, conflicting metadata, retired versions, or replacement of a different active catalog. Future catalog rotation must use the separately reviewed import, approve, and activate workflow.
|
||||
|
||||
## Operations
|
||||
|
||||
|
||||
Reference in New Issue
Block a user