version: '3.8' services: # Application service app: build: . ports: - "5000:5000" environment: - NODE_ENV=production - MONGODB_URI=mongodb://mongo:27017/insurance_portal - REDIS_HOST=redis - REDIS_PORT=6379 depends_on: - mongo - redis volumes: - ./uploads:/app/uploads restart: unless-stopped networks: - insurance-network # MongoDB service mongo: image: mongo:5.0 ports: - "27017:27017" volumes: - mongo-data:/data/db - ./mongo-init.js:/docker-entrypoint-initdb.d/mongo-init.js:ro environment: - MONGO_INITDB_ROOT_USERNAME=admin - MONGO_INITDB_ROOT_PASSWORD=password123 - MONGO_INITDB_DATABASE=insurance_portal restart: unless-stopped networks: - insurance-network # Redis service redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis-data:/data command: redis-server --appendonly yes --requirepass redis123 restart: unless-stopped networks: - insurance-network # Nginx reverse proxy nginx: image: nginx:alpine ports: - "80:80" - "443:443" volumes: - ./nginx.conf:/etc/nginx/nginx.conf:ro - ./ssl:/etc/nginx/ssl:ro depends_on: - app restart: unless-stopped networks: - insurance-network volumes: mongo-data: redis-data: networks: insurance-network: driver: bridge