Brings the three compose files in line with rule 198 (milestone 544, step 6203, at the operator's request): - no healthcheck on the app or the database, so a slow pg_isready on stalled storage can no longer get a working database killed; - no deploy.restart_policy in the Swarm file, so Swarm's default (condition: any) restarts clean exits too, instead of on-failure with max_attempts leaving the app down; - depends_on is plain start order; restart: unless-stopped stays on the plain-Compose files (Swarm ignores it), and the dev app gains it. The orchestrator used to be what retried a container that started before Postgres was ready. That is now the app's job: alembic/env.py calls services/db_ready.wait_for_database before migrating. It retries refused connections, unresolved hosts, connect timeouts and "the database system is starting up" with 1-2-4-...-10s spacing for up to 300s, then exits non-zero; a wrong password or missing database fails at once. Per-request recovery is the engine's pool_pre_ping. Also fixes the dev compose database image: postgres:16-alpine has no vector extension, so migrations could not run against it. It now uses pgvector/pgvector:pg17 like the other two files. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
34 lines
973 B
YAML
34 lines
973 B
YAML
services:
|
|
app:
|
|
build: .
|
|
ports:
|
|
- "5000:5000"
|
|
depends_on:
|
|
- db
|
|
restart: unless-stopped
|
|
volumes:
|
|
- app_data:/data
|
|
# Or a bind mount, for direct host access to the app's data:
|
|
# - ./data:/data
|
|
environment:
|
|
DATABASE_URL: "postgresql+asyncpg://${POSTGRES_USER:-scribe}:${POSTGRES_PASSWORD:-scribe}@db:5432/${POSTGRES_DB:-scribe}"
|
|
SECRET_KEY: "${SECRET_KEY:-dev-secret-change-me}"
|
|
# Optional: a SearXNG instance to list as the web-search backend in Integrations.
|
|
# SEARXNG_URL: "http://searxng:8080"
|
|
|
|
db:
|
|
# Postgres 17 with the vector extension Scribe needs.
|
|
image: pgvector/pgvector:pg17
|
|
stop_grace_period: 120s
|
|
restart: unless-stopped
|
|
volumes:
|
|
- pgdata:/var/lib/postgresql/data
|
|
environment:
|
|
POSTGRES_USER: ${POSTGRES_USER:-scribe}
|
|
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-scribe}
|
|
POSTGRES_DB: ${POSTGRES_DB:-scribe}
|
|
|
|
volumes:
|
|
pgdata:
|
|
app_data:
|