Files
FabledSteward/docker-compose.yml
T
bvandeusenandClaude Opus 5.5 5a44afe86e
CI / lint (push) Successful in 2s
CI / integration (push) Successful in 1m13s
CI / unit (push) Successful in 1m26s
CI / publish (push) Successful in 1m23s
chore(compose): no healthcheck on the database (#5275)
#5275 "steward_db killed by its healthcheck twice": on NFS, pg_isready
timed out during slow writes and the orchestrator killed a healthy
database. The operator removed it from the live stack and ruled that
Steward doesn't ship one. Steward waits for the database itself (60 s at
startup, retries per request), so depends_on needs no health condition.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 20:36:25 -04:00

52 lines
1.9 KiB
YAML

services:
steward:
build: .
container_name: steward
image: steward:latest
# Dev: --debug turns on Quart's auto-reloader so edits to the mounted source
# below take effect without a rebuild.
command: ["steward", "--host", "0.0.0.0", "--port", "5000", "--debug"]
ports:
- "5000:5000"
volumes:
- app_data:/data
# Live-edit core + first-party plugins without rebuilding. PYTHONPATH=/app
# (below) makes this mounted source win over the image-installed package.
- ./steward:/app/steward
- ./plugins:/app/plugins
# Dev playbooks: edit on the host under ./ansible-dev/, register a *local*
# Ansible source pointing at /srv/ansible in Settings → Ansible.
- ./ansible-dev:/srv/ansible
# Optional host mounts — enable the matching plugin in Settings first, then
# uncomment (the traefik path must exist on this host):
# - /mnt/Data/traefik/log:/var/log/traefik:ro # traefik plugin
# - /var/run/docker.sock:/var/run/docker.sock:ro # docker plugin
environment:
- STEWARD_DATABASE_URL=postgresql+asyncpg://steward:steward@db/steward
# Dev-only fixed key so sessions survive restarts. Replace in production.
- STEWARD_SECRET_KEY=dev-secret-key-change-me
- PYTHONPATH=/app
depends_on:
- db
restart: unless-stopped
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: steward
POSTGRES_PASSWORD: steward
POSTGRES_DB: steward
ports:
# Exposed for dev convenience (psql from the host). Drop for prod.
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
# No healthcheck: a slow disk (NFS) failed pg_isready and the orchestrator
# killed a healthy database mid-write (#5275). Steward waits for the
# database itself, at startup and per request (steward/database.py).
restart: unless-stopped
volumes:
pgdata:
app_data: