services: postgres: image: postgres:alpine container_name: sportbuddy-db environment: POSTGRES_USER: ${POSTGRES_USER:-sportbuddy} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-sportbuddy123} POSTGRES_DB: ${POSTGRES_DB:-sportbuddy} volumes: - postgres_data:/var/lib/postgresql/data ports: - "5432:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-sportbuddy}"] interval: 10s timeout: 5s retries: 5 networks: - sportbuddy-network backend: build: context: ./apps/backend target: development container_name: sportbuddy-backend env_file: - .env environment: NODE_ENV: development ports: - "3001:3001" - "5555:5555" # Prisma Studio depends_on: postgres: condition: service_healthy volumes: - ./apps/backend:/app - backend_node_modules:/app/node_modules - backend_next:/app/.next networks: - sportbuddy-network frontend: build: context: ./apps/frontend target: development container_name: sportbuddy-frontend env_file: - .env environment: NODE_ENV: development ports: - "3000:3000" depends_on: - backend volumes: - ./apps/frontend:/app - frontend_node_modules:/app/node_modules - frontend_next:/app/.next networks: - sportbuddy-network volumes: postgres_data: backend_node_modules: backend_next: frontend_node_modules: frontend_next: networks: sportbuddy-network: driver: bridge