version: '3.8' services: api: build: . container_name: mathminds_api ports: - "8000:8000" env_file: - .env environment: - REDIS_URL=redis://redis:6379/0 - MONGO_URI=mongodb://mongo:27017/mathminds - ENV=production depends_on: redis: condition: service_healthy mongo: condition: service_healthy networks: - mathminds_net restart: unless-stopped healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:8000/health" ] interval: 30s timeout: 10s retries: 3 start_period: 10s worker: build: . container_name: mathminds_worker command: celery -A app.worker.celery_app worker --loglevel=info --pool=solo env_file: - .env environment: - REDIS_URL=redis://redis:6379/0 - MONGO_URI=mongodb://mongo:27017/mathminds - ENV=production depends_on: redis: condition: service_healthy mongo: condition: service_healthy networks: - mathminds_net restart: unless-stopped frontend: build: context: . dockerfile: frontend/Dockerfile container_name: mathminds_frontend ports: - "8501:8501" env_file: - .env environment: - BACKEND_URL=http://api:8000 depends_on: api: condition: service_healthy networks: - mathminds_net restart: unless-stopped healthcheck: test: [ "CMD", "curl", "-f", "http://localhost:8501/_stcore/health" ] interval: 30s timeout: 10s retries: 3 start_period: 10s redis: image: redis:alpine container_name: mathminds_redis ports: - "6379:6379" volumes: - redis_data:/data networks: - mathminds_net restart: unless-stopped healthcheck: test: [ "CMD", "redis-cli", "ping" ] interval: 10s timeout: 5s retries: 5 mongo: image: mongo:latest container_name: mathminds_mongo ports: - "27017:27017" volumes: - mongo_data:/data/db networks: - mathminds_net restart: unless-stopped healthcheck: test: [ "CMD", "mongosh", "--eval", "db.adminCommand('ping')" ] interval: 10s timeout: 5s retries: 5 n8n: image: n8nio/n8n:latest container_name: mathminds_n8n ports: - "5678:5678" environment: - N8N_HOST=localhost - N8N_PORT=5678 - N8N_PROTOCOL=http - NODE_ENV=production - WEBHOOK_URL=http://localhost:5678/ volumes: - n8n_data:/home/node/.n8n networks: - mathminds_net restart: unless-stopped networks: mathminds_net: driver: bridge volumes: redis_data: mongo_data: n8n_data: