Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/md-emon-hasan/ml-project-iris-classifier-using-docker-and-github-action-with-deployment

🌸 End-to-end deployment with Docker and automatic deployment via GitHub Actions using Flask, Docker, and GitHub Actions for CI/CD.
https://github.com/md-emon-hasan/ml-project-iris-classifier-using-docker-and-github-action-with-deployment

ci-cd cicd data-science docker docker-image github-action render

Last synced: 4 days ago
JSON representation

🌸 End-to-end deployment with Docker and automatic deployment via GitHub Actions using Flask, Docker, and GitHub Actions for CI/CD.

Awesome Lists containing this project

README

        

# 🌸 Iris Flower Classification System

Welcome to the **Iris Flower Classification System** repository! This project leverages machine learning to classify Iris flowers into different species based on their features. It incorporates Docker for containerization, GitHub Actions for CI/CD, and deployment on Render for live hosting.

![355822492-aa068ef3-dfd8-4406-a39a-7646c3aba7af](https://github.com/user-attachments/assets/c44208f7-044a-4164-995e-1e853e885941)

## 📋 Contents

- [Introduction](#introduction)
- [Topics Covered](#topics-covered)
- [Getting Started](#getting-started)
- [Live Demo](#live-demo)
- [Docker and CI/CD](#docker-and-ci-cd)
- [Deploy on Render](#deploy-on-render)
- [Best Practices](#best-practices)
- [FAQ](#faq)
- [Troubleshooting](#troubleshooting)
- [Contributing](#contributing)
- [Additional Resources](#additional-resources)
- [Challenges Faced](#challenges-faced)
- [Lessons Learned](#lessons-learned)
- [Why I Created This Repository](#why-i-created-this-repository)
- [License](#license)
- [Contact](#contact)

---

## 📖 Introduction

This repository showcases a machine learning project aimed at classifying Iris flowers into different species. The project leverages Docker for containerization, GitHub Actions for CI/CD, and is deployed on Render for live demonstration.

---

## 🔍 Topics Covered

- **Machine Learning Models:** Training models to classify Iris flower species.
- **Data Preprocessing:** Techniques for cleaning and preparing the Iris dataset.
- **Model Evaluation:** Assessing the performance of the classification model.
- **Deployment:** Implementing the model as a web service using Flask.
- **Docker:** Containerizing the application for consistent deployment across environments.
- **CI/CD:** Automating tests and deployments with GitHub Actions.
- **Render:** Deploying the application on Render for live access.

---

## 🚀 Getting Started

To get started with this project, follow these steps:

1. **Clone the repository:**

```bash
git clone https://github.com/Md-Emon-Hasan/Iris-Classifier-using-Flask-with-Docker-GitHub-Action.git
```

2. **Navigate to the project directory:**

```bash
cd Iris-Classifier-using-Flask-with-Docker-GitHub-Action
```

3. **Create a virtual environment and activate it:**

```bash
python -m venv venv
source venv/bin/activate # On Windows use `venv\Scripts\activate`
```

4. **Install the dependencies:**

```bash
pip install -r requirements.txt
```

5. **Run the application:**

```bash
python app.py
```

6. **Open your browser and visit:**

```
http://127.0.0.1:5000/
```

---

## 🎉 Live Demo

Check out the live version of the Iris Flower Classification app [here](https://iris-classifier-using-docker-and-github.onrender.com).

---

## 🐳 Docker and CI/CD

### Docker

This project is containerized using Docker to ensure that the environment is consistent across different systems.

1. **Build the Docker image:**

```bash
docker build -t iris-classifier .
```

2. **Run the Docker container:**

```bash
docker run -p 5000:5000 iris-classifier
```

3. **Visit the application:**

```
http://127.0.0.1:5000/
```

### CI/CD with GitHub Actions

This project uses GitHub Actions for continuous integration and deployment. Each commit triggers the following workflow:

- **Linting and Testing:** Automatically runs linting and tests to ensure code quality.
- **Build and Deploy:** Builds the Docker image and deploys the application to a cloud platform (e.g., Render, Heroku).

You can find the CI/CD workflow file in `.github/workflows/ci-cd.yml`.

---

## 🌐 Deploy on Render

To deploy this application on Render, follow these steps:

1. **Sign up for Render:** Visit [Render](https://render.com) and sign up for an account.

2. **Create a new Web Service:**
- Select "New Web Service" from your Render dashboard.
- Connect your GitHub repository.
- Select your desired branch (e.g., `main`) and set up the build and runtime settings.

3. **Deploy:** Render will automatically build and deploy your application. Once the deployment is successful, your application will be live.

4. **Access your live app:** Your application will be accessible via a Render-generated URL.

---

## 🌟 Best Practices

Recommendations for maintaining and improving this project:

- **Model Updating:** Continuously retrain the model with new data to improve accuracy.
- **Container Security:** Ensure the Docker container is secure and free from vulnerabilities.
- **Error Handling:** Implement comprehensive error handling in both the app and the CI/CD pipeline.
- **Documentation:** Keep the documentation up-to-date with the latest changes and improvements.

---

## ❓ FAQ

**Q: What is the purpose of this project?**
A: This project classifies Iris flowers into different species based on their features, demonstrating the use of machine learning, Docker, and CI/CD practices.

**Q: How can I contribute to this repository?**
A: Refer to the [Contributing](#contributing) section for details on how to contribute.

**Q: Can I deploy this app on cloud platforms?**
A: Yes, you can deploy the Dockerized app on platforms such as Heroku, Render, or AWS.

---

## 🛠️ Troubleshooting

Common issues and solutions:

- **Issue: Docker Container Not Running**
*Solution:* Ensure that Docker is properly installed and the image was built successfully.

- **Issue: CI/CD Pipeline Failing**
*Solution:* Check the GitHub Actions logs for errors and ensure all tests pass locally before committing.

- **Issue: Model Accuracy Low**
*Solution:* Verify that the training data is preprocessed correctly and consider tuning the hyperparameters of the model.

---

## 🤝 Contributing

Contributions are welcome! Here's how you can contribute:

1. **Fork the repository.**
2. **Create a new branch:**

```bash
git checkout -b feature/new-feature
```

3. **Make your changes:**

- Add features, fix bugs, or improve documentation.

4. **Commit your changes:**

```bash
git commit -am 'Add a new feature or update'
```

5. **Push to the branch:**

```bash
git push origin feature/new-feature
```

6. **Submit a pull request.**

---

## 📚 Additional Resources

Explore these resources for more insights into Docker, CI/CD, and machine learning:

- **Docker Official Documentation:** [docs.docker.com](https://docs.docker.com/)
- **GitHub Actions Documentation:** [docs.github.com](https://docs.github.com/en/actions)
- **Render Documentation:** [render.com/docs](https://render.com/docs)
- **Machine Learning Tutorials:** [Kaggle](https://www.kaggle.com/learn/overview)

---

## 💪 Challenges Faced

Some challenges during development:

- Setting up Docker for seamless deployment across environments.
- Configuring the CI/CD pipeline to automate the testing and deployment process.
- Ensuring the model performs well with a limited dataset.

---

## 📚 Lessons Learned

Key takeaways from this project:

- Hands-on experience with Docker for containerizing machine learning applications.
- Setting up CI/CD pipelines for automated testing and deployment.
- Importance of continuous model improvement and deployment best practices.

---

## 🌟 Why I Created This Repository

This repository was created to demonstrate the end-to-end process of developing, containerizing, and deploying a machine learning model for classifying Iris flowers, with a focus on using Docker and CI/CD best practices.

---

## 📝 License

This repository is licensed under the [MIT License](https://opensource.org/licenses/MIT). See the [LICENSE](LICENSE) file for more details.

---

## 📬 Contact

- **Email:** [[email protected]](mailto:[email protected])
- **WhatsApp:** [+8801834363533](https://wa.me/8801834363533)
- **GitHub:** [Md-Emon-Hasan](https://github.com/Md-Emon-Hasan)
- **LinkedIn:** [Md Emon Hasan](https://www.linkedin.com/in/md-emon-hasan)
- **Facebook:** [Md Emon Hasan](https://www.facebook.com/mdemon.hasan2001/)

---

Feel free to adjust and expand this template based on the specifics of your project and requirements.

---