Files
post3/todos/POST3-010-docker-compose-production.md
2026-02-27 11:38:10 +01:00

35 lines
1.3 KiB
Markdown

# POST3-010: Production Docker Compose setup
**Status:** Todo
**Priority:** P1
**Blocked by:** POST3-009
## Description
Create a production-oriented Docker Compose setup that runs post3-server alongside PostgreSQL, with proper networking, health checks, and configuration.
## Acceptance Criteria
- [ ] `Dockerfile` (multi-stage) for post3-server:
- Builder stage: rust image, compile release binary
- Runtime stage: debian-slim or alpine, copy binary + migrations
- Health check endpoint (add `GET /health` to router)
- Non-root user
- [ ] `templates/docker-compose.production.yaml`:
- `postgres` service (PostgreSQL 18, persistent volume, health check)
- `post3` service (built image, depends_on postgres healthy, DATABASE_URL from env)
- Named volumes for PostgreSQL data
- Internal network
- Port 9000 exposed for post3
- [ ] `templates/.env.example` — sample env file for production
- [ ] `GET /health` endpoint on the server (returns 200 when DB is reachable)
- [ ] `mise.toml` tasks:
- `prod:up` — start production compose
- `prod:down` — stop production compose
- `prod:build` — build the Docker image
- [ ] README section on production deployment
## Notes
The CI pipeline (POST3-009) will produce the container image. This ticket handles the compose orchestration for self-hosted deployment.