| --- |
| title: Tech Stack Advisor |
| emoji: π§ |
| colorFrom: indigo |
| colorTo: pink |
| sdk: docker |
| app_file: app.py |
| pinned: false |
| license: apache-2.0 |
| duplicable: true |
| --- |
| |
| # π§ Tech Stack Advisor β ML App (with Docker & Hugging Face Deployment) |
|
|
| **Tech Stack Advisor** is a hands-on machine learning project designed to teach you how to build, containerize, and deploy an ML-powered web application using Docker and Hugging Face Spaces. |
|
|
| > π― This project is part of the **"Artificial Intelligence and Machine Learning (AI/ML) with Docker"** course from **School of DevOps**. |
|
|
| --- |
|
|
| ## π What You'll Learn |
|
|
| - Build and train a simple ML model using `scikit-learn` |
| - Create a UI using `Gradio` |
| - Containerize your app using a Dockerfile |
| - Push your Docker image to Docker Hub |
| - Deploy the Dockerized app on Hugging Face Spaces (free tier) |
|
|
| --- |
|
|
| ## π Project Structure |
|
|
| ``` |
| |
| tech-stack-advisor/ |
| βββ app.py # Gradio web app |
| βββ train.py # Script to train and save ML model |
| βββ requirements.txt # Python dependencies |
| βββ Dockerfile # Docker build file (added during the lab) |
| βββ model.pkl # Trained ML model (generated after training) |
| βββ encoders.pkl # Encoders for categorical inputs (generated after training) |
| βββ LICENSE # Apache 2.0 license |
| βββ README.md # This guide |
| |
| ```` |
|
|
| --- |
|
|
| ## π§ Step 1: Setup and Train Your ML Model |
|
|
| 1. **Clone the repository** |
|
|
| ```bash |
| git clone https://github.com/<your-username>/tech-stack-advisor.git |
| cd tech-stack-advisor |
| ```` |
|
|
| 2. **Install dependencies** |
|
|
| (Optional: Use a virtual environment) |
|
|
| ```bash |
| pip install -r requirements.txt |
| ``` |
|
|
| 3. **Train the model** |
|
|
| ```bash |
| python train.py |
| ``` |
|
|
| This creates: |
|
|
| * `model.pkl`: the trained ML model |
| * `encoders.pkl`: label encoders for input/output features |
|
|
| --- |
|
|
| ## π₯οΈ Step 2: Run the App Locally (Without Docker) |
|
|
| ```bash |
| python app.py |
| ``` |
|
|
| Visit the app in your browser at: |
|
|
| ``` |
| http://localhost:7860 |
| ``` |
|
|
| --- |
|
|
| ## π³ Step 3: Add Docker Support |
|
|
| Create a file named `Dockerfile` in the root of the project: |
|
|
| ```dockerfile |
| FROM python:3.11-slim |
| |
| WORKDIR /app |
| |
| COPY requirements.txt . |
| RUN pip install --no-cache-dir -r requirements.txt |
| |
| COPY . . |
| |
| EXPOSE 7860 |
| |
| CMD ["python", "app.py"] |
| ``` |
|
|
| --- |
|
|
| ## π§ Step 4: Build and Run the Docker Container |
|
|
| 1. **Build the image** |
|
|
| ```bash |
| docker build -t tech-stack-advisor . |
| ``` |
|
|
| 2. **Run the container** |
|
|
| ```bash |
| docker run -p 7860:7860 tech-stack-advisor |
| ``` |
|
|
| Visit: `http://localhost:7860` |
|
|
| --- |
|
|
| ## βοΈ Step 5: Publish to Docker Hub |
|
|
| 1. **Login to Docker Hub** |
|
|
| ```bash |
| docker login |
| ``` |
|
|
| 2. **Tag the image** |
|
|
| ```bash |
| docker tag tech-stack-advisor <your-dockerhub-username>/tech-stack-advisor:latest |
| ``` |
|
|
| 3. **Push it** |
|
|
| ```bash |
| docker push <your-dockerhub-username>/tech-stack-advisor:latest |
| ``` |
|
|
| --- |
|
|
| ## π Step 6: Deploy to Hugging Face Spaces |
|
|
| 1. Go to [huggingface.co/spaces](https://huggingface.co/spaces) |
| 2. Click **Create New Space** |
| 3. Select: |
|
|
| * **SDK**: Docker |
| * **Repository**: Link to your GitHub repo with the Dockerfile |
| 4. Hugging Face will auto-build and deploy your container. |
|
|
| --- |
|
|
| ## π§ͺ Test Your Skills |
|
|
| * Can you swap the model in `train.py` for a `LogisticRegression` model? |
| * Can you add logging to show which inputs were passed? |
| * Try changing the Gradio layout or theme! |
|
|
| --- |
|
|
| ## π§Ύ License |
|
|
| This project is licensed under the **Apache License 2.0**. |
| See the [LICENSE](./LICENSE) file for details. |
|
|
| --- |
|
|
| ## π Credits |
|
|
| Created by \[Gourav Shah](https://www.linkedin.com/in/gouravshah) as part of the **AI/ML with Docker** course at **School of DevOps**. |
|
|
| --- |
|
|
| > π Happy shipping, DevOps and MLOps builders! |
|
|
|
|