Files
inkwell/docker-compose.dev.yml
T
bvandeusenandClaude Opus 5.5 5556bb2136
CI & Build / Build now, or wait for Android? (push) Successful in 2s
Android / Build, or is the channel already serving this? (push) Successful in 2s
Android / Core and FFI clippy and tests (push) Skipped
Android / Kotlin + Rust (APK) (push) Skipped
Android / Build the server image (push) Skipped
CI & Build / Python lint (push) Successful in 2s
CI & Build / Web typecheck and unit tests (push) Successful in 10s
Desktop (Tauri) / Build, or is the channel already serving this? (push) Successful in 2s
Desktop (Tauri) / Web tests, clippy, Rust tests and rustfmt (push) Skipped
Desktop (Tauri) / Tauri desktop (Linux) (push) Skipped
Desktop (Tauri) / Windows installer (cross-compiled) (push) Skipped
Desktop (Tauri) / Update manifest (push) Skipped
CI & Build / Python tests (push) Successful in 13s
CI & Build / integration (push) Successful in 1m34s
CI & Build / Build & push image (push) Successful in 29s
Compose files run on the orchestrator's defaults (#6220)
Shipped stacks drop every healthcheck and the depends_on
service_healthy wait, per rule 198 "Shipped compose files run on the
orchestrator's defaults: no healthcheck, no restart policy". A
pg_isready healthcheck turns slow storage into a killed database. The
app needs neither: inkwell.dbwait waits up to 60s for Postgres at
start, and the engine's pool_pre_ping retries per request.

- docker-compose.yml: db and app healthchecks removed; depends_on is
  a plain start order. Comments cut to one or two lines per setting
  under rule 32 "Comments describe the product to a stranger": the
  family/rule references are gone, and the three-way port explanation
  points at docs/public-hosting.md, which already holds it.
- docker-compose.dev.yml: db healthcheck and service_healthy removed;
  header shortened.
- README: the copy-paste stack loses the same two blocks.

restart: unless-stopped stays: plain Compose defaults to no restart,
and Swarm ignores the key.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-21 19:45:46 -04:00

60 lines
1.7 KiB
YAML

# Development stack: Postgres, the backend with live reload, and the Vite dev server.
#
# docker compose -f docker-compose.dev.yml up
#
# Then open http://localhost:5173. For laptops only: the password is fixed and
# Postgres is published on 5432. docker-compose.yml is the deployment stack.
services:
db:
image: postgres:16-alpine
environment:
POSTGRES_USER: inkwell
POSTGRES_PASSWORD: inkwell
POSTGRES_DB: inkwell
volumes:
- inkwell-dev-db:/var/lib/postgresql/data
ports:
- "5432:5432"
api:
image: python:3.12-slim
working_dir: /app
depends_on:
- db
environment:
INKWELL_DATABASE_URL: postgresql+asyncpg://inkwell:inkwell@db:5432/inkwell
PYTHONPATH: /app/src
volumes:
- ./pyproject.toml:/app/pyproject.toml
- ./alembic.ini:/app/alembic.ini
- ./alembic:/app/alembic
- ./src:/app/src
- inkwell-dev-data:/var/inkwell
ports:
- "5000:5000"
# Install deps, wait for the DB, run migrations, then serve with live reload.
command: >
sh -c "pip install --quiet -e . &&
python -m inkwell.dbwait &&
alembic upgrade head &&
hypercorn 'inkwell.app:create_app()' --bind 0.0.0.0:5000 --reload"
web:
image: node:22-alpine
working_dir: /app
depends_on:
- api
environment:
# Vite proxies /api to the backend service (see frontend/vite.config.ts).
VITE_API_TARGET: http://api:5000
volumes:
- ./frontend:/app
- /app/node_modules
ports:
- "5173:5173"
command: sh -c "npm install && npm run dev -- --host 0.0.0.0"
volumes:
inkwell-dev-db:
inkwell-dev-data: