Provide the runnable local stack described in the technology section of the spec.
## Scope
- `docker-compose.yml` with services: `web` (nginx), `app` (PHP-FPM), `db` (PostgreSQL), `assets` (Node build)
- Named volume for PostgreSQL data
- Bind mounts for the managed library directory and the application source in dev
- Health checks for `db`; `app` waits for a healthy database
## Acceptance criteria
- [ ] `docker compose up` yields a reachable PHP page served by nginx
- [ ] PostgreSQL data survives `docker compose down` and restart
- [ ] Library directory is mounted read-write and visible to the app container
---
Blocked by: #4
keith
added this to the M1 - Docker & Dev Environment milestone 2026-10-10 22:18:17 +00:00
Acceptance reconciliation at c1ef2ee: Compose services, PG health gate/volume and writable library bind are implemented. Historical M1 runtime checks recorded HTTP reachability, writes as www-data and database marker survival across down/up (M1 task3/task5 reports). These are historical Linux checks, not a fresh Docker replay. Closing on that evidence; not a production-readiness claim.
Acceptance reconciliation at c1ef2ee: Compose services, PG health gate/volume and writable library bind are implemented. Historical M1 runtime checks recorded HTTP reachability, writes as www-data and database marker survival across down/up (M1 task3/task5 reports). These are historical Linux checks, not a fresh Docker replay. Closing on that evidence; not a production-readiness claim.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Provide the runnable local stack described in the technology section of the spec.
Scope
docker-compose.ymlwith services:web(nginx),app(PHP-FPM),db(PostgreSQL),assets(Node build)db;appwaits for a healthy databaseAcceptance criteria
docker compose upyields a reachable PHP page served by nginxdocker compose downand restartBlocked by: #4
Acceptance reconciliation at
c1ef2ee: Compose services, PG health gate/volume and writable library bind are implemented. Historical M1 runtime checks recorded HTTP reachability, writes as www-data and database marker survival across down/up (M1 task3/task5 reports). These are historical Linux checks, not a fresh Docker replay. Closing on that evidence; not a production-readiness claim.