services: # Frontend frontend: build: context: ./frontend dockerfile: Dockerfile ports: - "3000:3000" environment: - NODE_ENV=development volumes: - ./frontend:/app - /app/node_modules depends_on: - api-gateway # API Gateway api-gateway: build: context: ./backend/services/api-gateway dockerfile: Dockerfile ports: - "8000:8000" environment: - GAME_SERVICE_URL=http://game-service:8001 - QUESTION_SERVICE_URL=http://question-service:8002 - PLAYER_SERVICE_URL=http://player-service:8003 - ADMIN_SERVICE_URL=http://admin-service:8004 - DATABASE_URL=sqlite:///./know_foolery.db volumes: - ./backend/shared:/app/shared - ./backend/database:/app/database - database_data:/app/data depends_on: - game-service - question-service - player-service - admin-service # Game Service game-service: build: context: ./backend/services/game-service dockerfile: Dockerfile ports: - "8001:8001" environment: - DATABASE_URL=sqlite:///./know_foolery.db - DEBUG=false volumes: - ./backend/shared:/app/shared - ./backend/database:/app/database - database_data:/app/data # Question Service question-service: build: context: ./backend/services/question-service dockerfile: Dockerfile ports: - "8002:8002" environment: - DATABASE_URL=sqlite:///./know_foolery.db - DEBUG=false volumes: - ./backend/shared:/app/shared - ./backend/database:/app/database - database_data:/app/data # Player Service player-service: build: context: ./backend/services/player-service dockerfile: Dockerfile ports: - "8003:8003" environment: - DATABASE_URL=sqlite:///./know_foolery.db - DEBUG=false volumes: - ./backend/shared:/app/shared - ./backend/database:/app/database - database_data:/app/data # Admin Service admin-service: build: context: ./backend/services/admin-service dockerfile: Dockerfile ports: - "8004:8004" environment: - DATABASE_URL=sqlite:///./know_foolery.db - JWT_SECRET_KEY=${JWT_SECRET_KEY} - DEBUG=false volumes: - ./backend/shared:/app/shared - ./backend/database:/app/database - database_data:/app/data # Redis for caching and sessions redis: image: redis:7-alpine ports: - "6379:6379" command: redis-server --appendonly yes volumes: - redis_data:/data # Nginx reverse proxy (optional for production) nginx: image: nginx:alpine ports: - "80:80" volumes: - ./nginx.conf:/etc/nginx/nginx.conf depends_on: - frontend - api-gateway profiles: - production volumes: redis_data: database_data: