63a99e8154
- R1 soft delete: add deleted_at to slabs; exclude deleted rows from GETs - R2 publish: terminal poll returns woo_product_id then the working row is discarded; the app never deletes from WooCommerce (reworks PUBLISH-25) - R3 prompts: SQLite is the point of record; file-based prompts superseded, compose prompt mount removed - R4 images: photo bytes are SQLite BLOBs; /images is a health probe + staging Details recorded in .audit/m3-build-plan.md.
44 lines
1.4 KiB
YAML
44 lines
1.4 KiB
YAML
# Implementable compose for SlabUploader.
|
|
# Phase 0 deliverable targets: frontend/Dockerfile, backend/Dockerfile,
|
|
# and deploy/.env.example are not yet in the tree on
|
|
# docs-only main. This file pins their paths so scaffolding does not invent them.
|
|
# From repo root (after those scaffolds exist):
|
|
# cp deploy/.env.example deploy/.env && chmod 600 deploy/.env
|
|
# docker compose -f deploy/docker-compose.yml --env-file deploy/.env up -d
|
|
# Bind loopback only. Caddy is the TLS edge. Services on the compose network
|
|
# are named `frontend` and `fastapi` (must match Caddyfile.fragment).
|
|
#
|
|
# WOO_BASE_URL is deploy-time SoT, HTTPS only. FastAPI must refuse http://
|
|
# at startup. Settings UI displays the URL read-only.
|
|
|
|
services:
|
|
frontend:
|
|
build:
|
|
context: ..
|
|
dockerfile: frontend/Dockerfile
|
|
ports: ["127.0.0.1:${FRONTEND_PORT:-18080}:80"]
|
|
depends_on: [fastapi]
|
|
restart: unless-stopped
|
|
|
|
fastapi:
|
|
build:
|
|
context: ..
|
|
dockerfile: backend/Dockerfile
|
|
env_file:
|
|
- .env
|
|
environment:
|
|
SLAB_AES_KEY: ${SLAB_AES_KEY}
|
|
WOO_BASE_URL: ${WOO_BASE_URL}
|
|
APP_HOSTNAME: ${APP_HOSTNAME:-}
|
|
# Woo Application Password + inference keys: AES-GCM in SQLite via Settings UI
|
|
volumes:
|
|
- slab_db:/data
|
|
- slab_images:/images
|
|
ports: ["127.0.0.1:${FASTAPI_PORT:-18081}:8000"]
|
|
mem_limit: 2g
|
|
restart: unless-stopped
|
|
|
|
volumes:
|
|
slab_db:
|
|
slab_images:
|