| # Docker Configuration |
|
|
| This directory contains all Docker-related configuration files for the Hopcroft Skill Classification project. |
|
|
| ## Directory Structure |
|
|
| ``` |
| docker/ |
| βββ Dockerfile # Main API container (Python 3.10, FastAPI, Nginx) |
| βββ Dockerfile.streamlit # Streamlit GUI container |
| βββ docker-compose.yml # Multi-service orchestration |
| βββ nginx.conf # Reverse proxy configuration for HF Spaces |
| βββ .dockerignore # Build context exclusions |
| βββ scripts/ |
| β βββ start_space.sh # Startup script for Hugging Face Spaces |
| βββ README.md # This file |
| ``` |
|
|
| ## File Descriptions |
|
|
| | File | Purpose | |
| |------|---------| |
| | `Dockerfile` | Main container with FastAPI API, DVC, Nginx. Used for HF Spaces deployment. | |
| | `Dockerfile.streamlit` | Lightweight Streamlit-only container for GUI service. | |
| | `docker-compose.yml` | Orchestrates API, GUI, Prometheus, Grafana, Alertmanager, Pushgateway. | |
| | `nginx.conf` | Reverse proxy routing traffic to API (8000) and Streamlit (8501) on port 7860. | |
| | `.dockerignore` | Excludes data/, tests/, docs/ etc. from Docker build context. | |
| | `start_space.sh` | Configures DVC, pulls models, starts FastAPI + Streamlit + Nginx. | |
|
|
| ## Quick Start |
|
|
| ### Local Development |
|
|
| ```bash |
| # From the docker/ directory |
| docker compose up -d --build |
| |
| # Or from repository root |
| docker compose -f docker/docker-compose.yml up -d --build |
| ``` |
|
|
| **Available Services:** |
| | Service | URL | |
| |---------|-----| |
| | API (FastAPI) | http://localhost:8080/docs | |
| | GUI (Streamlit) | http://localhost:8501 | |
| | Prometheus | http://localhost:9090 | |
| | Grafana | http://localhost:3000 (admin/admin) | |
| | Pushgateway | http://localhost:9091 | |
| | Alertmanager | http://localhost:9093 | |
|
|
| ### Stop Services |
|
|
| ```bash |
| docker compose -f docker/docker-compose.yml down |
| ``` |
|
|
| ### View Logs |
|
|
| ```bash |
| docker compose -f docker/docker-compose.yml logs -f |
| ``` |
|
|
| ## Building Individual Images |
|
|
| ```bash |
| # From repository root |
| docker build -f docker/Dockerfile -t hopcroft-api:latest . |
| docker build -f docker/Dockerfile.streamlit -t hopcroft-gui:latest . |
| ``` |
|
|
| ## Environment Variables |
|
|
| The `.env` file in the repository root is automatically loaded. Required variables: |
|
|
| ```env |
| MLFLOW_TRACKING_URI=https://dagshub.com/se4ai2526-uniba/Hopcroft.mlflow |
| MLFLOW_TRACKING_USERNAME=your_username |
| MLFLOW_TRACKING_PASSWORD=your_token |
| ``` |
|
|
| ## Hugging Face Spaces |
|
|
| The `Dockerfile` and `start_space.sh` are configured for HF Spaces deployment: |
| - Exposes port 7860 (HF Spaces requirement) |
| - Uses Nginx as reverse proxy |
| - Pulls models from DagsHub via DVC on startup |
|
|
| **Secrets required on HF Spaces:** |
| - `DAGSHUB_USERNAME` |
| - `DAGSHUB_TOKEN` |
|
|