version: '3.8' services: # MongoDB Database mongodb: image: mongo:6.0 container_name: task-trek-mongodb restart: unless-stopped environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: password123 MONGO_INITDB_DATABASE: task-trek ports: - "27017:27017" volumes: - mongodb_data:/data/db - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro networks: - task-trek-network # Backend Application backend: build: . container_name: task-trek-backend restart: unless-stopped environment: NODE_ENV: production PORT: 5000 MONGODB_URI: mongodb://admin:password123@mongodb:27017/task-trek?authSource=admin JWT_SECRET: your-super-secret-jwt-key-change-in-production CLIENT_URL: http://localhost:3000 ports: - "5000:5000" depends_on: - mongodb volumes: - ./uploads:/app/uploads networks: - task-trek-network # Frontend Development (optional - for development) frontend-dev: image: node:18-alpine container_name: task-trek-frontend-dev working_dir: /app/client command: npm run dev environment: - VITE_API_URL=http://localhost:5000 ports: - "3000:3000" volumes: - ./client:/app/client - /app/client/node_modules networks: - task-trek-network profiles: - dev volumes: mongodb_data: networks: task-trek-network: driver: bridge