services: db: image: postgres:16-alpine environment: POSTGRES_USER: photon POSTGRES_PASSWORD: photon POSTGRES_DB: photon volumes: - postgres_data:/var/lib/postgresql/data ports: - "${POSTGRES_PORT:-5432}:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U photon"] interval: 5s timeout: 5s retries: 5 api: build: context: . dockerfile: apps/api/Dockerfile ports: - "3000:3000" environment: DATABASE_URL: postgresql://photon:photon@db:5432/photon JWT_SECRET: dev-jwt-secret-change-in-production STORAGE_PATH: /app/storage CORS_ORIGIN: http://localhost:5173 NODE_ENV: development volumes: - ./apps/api/src:/app/apps/api/src - ./storage:/app/storage depends_on: db: condition: service_healthy command: pnpm --filter @photon/api run dev web: build: context: . dockerfile: apps/web/Dockerfile ports: - "5173:5173" environment: VITE_API_URL: http://localhost:3000 volumes: - ./apps/web/src:/app/apps/web/src - ./apps/web/index.html:/app/apps/web/index.html depends_on: - api command: pnpm --filter @photon/web run dev --host volumes: postgres_data: