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
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>
60 lines
1.7 KiB
YAML
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:
|