diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..196ca21 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,51 @@ +services: + db: + image: postgres:16-alpine + container_name: codetutor-db + environment: + POSTGRES_USER: codetutor + POSTGRES_PASSWORD: codetutor + POSTGRES_DB: codetutor + ports: + - "5432:5432" + volumes: + - codetutor-db-data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U codetutor"] + interval: 5s + timeout: 5s + retries: 5 + + backend: + build: + context: ./backend + dockerfile: Dockerfile + container_name: codetutor-backend + environment: + DATABASE_URL: postgresql+asyncpg://codetutor:codetutor@db:5432/codetutor + CORS_ORIGINS: '["http://localhost:3000"]' + ports: + - "8000:8000" + depends_on: + db: + condition: service_healthy + volumes: + - ./backend/src:/app/src:ro + command: uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload + + frontend: + build: + context: ./frontend + dockerfile: Dockerfile + container_name: codetutor-frontend + environment: + NEXT_PUBLIC_API_URL: http://localhost:8000 + ports: + - "3000:3000" + depends_on: + - backend + volumes: + - ./frontend/src:/app/src:ro + +volumes: + codetutor-db-data: