Skip to content

Infrastructure: Full Docker Compose Setup — All Services #115

@0xdevcollins

Description

@0xdevcollins

Severity: MEDIUM — No One-Command Local Development

Problem

The current docker-compose.yml only includes Postgres and Redis. Every developer must manually start the API, dashboard, checkout, and www apps. There's no reproducible local environment.

Implementation Required

```yaml

docker-compose.yml

services:
postgres:
image: postgres:16-alpine
environment:
POSTGRES_DB: tavvio
POSTGRES_USER: tavvio
POSTGRES_PASSWORD: password
ports: ["5434:5432"]
volumes: [postgres_data:/var/lib/postgresql/data]
healthcheck:
test: ["CMD-SHELL", "pg_isready -U tavvio"]

redis:
image: redis:7-alpine
ports: ["6379:6379"]
healthcheck:
test: ["CMD", "redis-cli", "ping"]

api:
build:
context: .
dockerfile: apps/api/Dockerfile
ports: ["3000:3000"]
env_file: .env
depends_on:
postgres: { condition: service_healthy }
redis: { condition: service_healthy }
volumes: [./apps/api:/app/apps/api] # hot reload in dev
command: npm run start:dev

dashboard:
build:
context: .
dockerfile: apps/dashboard/Dockerfile
ports: ["3001:3001"]
env_file: apps/dashboard/.env.local
depends_on: [api]

checkout:
build:
context: .
dockerfile: apps/checkout/Dockerfile
ports: ["3003:3003"]
env_file: apps/checkout/.env.local
depends_on: [api]

www:
build:
context: .
dockerfile: apps/www/Dockerfile
ports: ["3002:3002"]

volumes:
postgres_data:
```

Dockerfiles Required

  • apps/api/Dockerfile — NestJS with Prisma migrate on start
  • apps/dashboard/Dockerfile — Next.js
  • apps/checkout/Dockerfile — Next.js
  • apps/www/Dockerfile — Next.js

Dev startup script

```bash

scripts/dev.sh

docker compose up postgres redis -d
npx prisma migrate dev
npm run dev # starts all apps via turborepo
```

Acceptance Criteria

  • docker compose up starts full stack (Postgres, Redis, API, Dashboard, Checkout, WWW)
  • Prisma migrations run automatically on API container start
  • Hot reload works in development mode
  • All Dockerfiles use multi-stage builds for production
  • README.md updated with one-command setup: docker compose up

Metadata

Metadata

Assignees

No one assigned

    Labels

    infrastructureDevOps, Docker, deployment, monitoring

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions