examide / docker-compose.yml
Mananjp's picture
feat: Complete ExamIDE with test cases, auto-judging, scoring, PDF reports, room expiry & Docker
092e3d5
# ============================================================================
# Online Exam IDE β€” Docker Compose
# ============================================================================
#
# IMPORTANT (MongoDB Atlas IP Whitelisting):
# MongoDB Atlas requires your IP address to be whitelisted before allowing
# connections. When running in Docker (locally or on a server), you must:
#
# 1. Go to MongoDB Atlas β†’ Network Access β†’ Add IP Address
# 2. Either add your server/host IP, OR use 0.0.0.0/0 to allow all IPs
# (suitable for development; restrict in production)
# 3. The backend container uses certifi for TLS and dnspython for SRV
# record resolution, so Atlas SRV connection strings work correctly.
#
# Usage:
# docker-compose up --build # Build and start
# docker-compose up -d # Detached mode
# docker-compose down # Stop and remove
# docker-compose logs -f backend # Follow backend logs
#
# Access:
# Frontend: http://localhost:8501
# Backend: http://localhost:8000
# API Docs: http://localhost:8000/docs
# ============================================================================
services:
backend:
build:
context: .
dockerfile: Dockerfile.backend
container_name: exam-ide-backend
ports:
- "8000:8000"
env_file:
- backend/.env
restart: unless-stopped
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
container_name: exam-ide-frontend
ports:
- "8501:8501"
environment:
- BACKEND_URL=http://backend:8000
depends_on:
backend:
condition: service_healthy
restart: unless-stopped