- auth: register/login/refresh/logout w/ JWT+Argon2, protected mutations - domain: User, RefreshSession, auth ports, Unauthorized/Forbidden errors - presentation: context/state/factory/errors/extractors/openapi modules - routes behind /api, SPA served from root w/ fallback - OpenAPI Scalar at /docs - frontend ssr:false, single-binary Dockerfile
29 lines
680 B
YAML
29 lines
680 B
YAML
# PocketChords – single-binary deployment
|
||
#
|
||
# Usage:
|
||
# cp .env.compose .env.compose.local # fill in your values
|
||
# docker compose --env-file .env.compose.local up -d --build
|
||
|
||
services:
|
||
app:
|
||
build:
|
||
context: .
|
||
dockerfile: Dockerfile
|
||
restart: unless-stopped
|
||
ports:
|
||
- "${PORT:-8000}:8000"
|
||
environment:
|
||
DATABASE_URL: sqlite:///app/data/pocket-chords.db
|
||
HOST: 0.0.0.0
|
||
PORT: 8000
|
||
JWT_SECRET: ${JWT_SECRET}
|
||
ALLOW_REGISTRATION: ${ALLOW_REGISTRATION:-false}
|
||
CORS_ALLOWED_ORIGINS: ${CORS_ALLOWED_ORIGINS:-*}
|
||
SPA_DIR: /app/spa
|
||
volumes:
|
||
- app-data:/app/data
|
||
|
||
volumes:
|
||
app-data:
|
||
driver: local
|