version: '3.8' services: # Backend (Laravel) backend: build: context: . dockerfile: ./apps/backend/Dockerfile container_name: saas_backend ports: - "8000:8000" volumes: - .:/var/www depends_on: - db networks: - saas_network # Frontend (Next.js) frontend: build: context: . dockerfile: ./apps/frontend/Dockerfile container_name: saas_frontend ports: - "3000:3000" volumes: - .:/app - /app/node_modules working_dir: /app depends_on: - backend networks: - saas_network # Database (PostgreSQL) db: image: postgres:15-alpine container_name: saas_db restart: unless-stopped environment: POSTGRES_DB: ${DB_DATABASE:-saas} POSTGRES_USER: ${DB_USERNAME:-user} POSTGRES_PASSWORD: ${DB_PASSWORD:-password} ports: - "5432:5432" volumes: - saas_db_data:/var/lib/postgresql/data networks: - saas_network # Python Microservice python_microservice: build: context: . dockerfile: ./apps/python-microservice/Dockerfile container_name: saas_python_microservice ports: - "50051:50051" # for gRPC volumes: - .:/app working_dir: /app networks: - saas_network volumes: saas_db_data: driver: local networks: saas_network: driver: bridge