{"id":24984006,"url":"https://github.com/benjikazzooe/fastapi-docker","last_synced_at":"2026-05-05T05:36:37.898Z","repository":{"id":275210873,"uuid":"925420225","full_name":"BenjiKazzooe/FastAPI-Docker","owner":"BenjiKazzooe","description":"FastAPI Dockerized Machine Learning API","archived":false,"fork":false,"pushed_at":"2025-01-31T21:11:15.000Z","size":6,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-29T10:15:33.818Z","etag":null,"topics":["classification","data-science","docker","fastapi","machine-learning","random-forest"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BenjiKazzooe.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-31T21:03:51.000Z","updated_at":"2025-01-31T21:11:20.000Z","dependencies_parsed_at":"2025-01-31T22:29:18.482Z","dependency_job_id":null,"html_url":"https://github.com/BenjiKazzooe/FastAPI-Docker","commit_stats":null,"previous_names":["benjikazzooe/fastapi-docker"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BenjiKazzooe%2FFastAPI-Docker","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BenjiKazzooe%2FFastAPI-Docker/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BenjiKazzooe%2FFastAPI-Docker/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BenjiKazzooe%2FFastAPI-Docker/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BenjiKazzooe","download_url":"https://codeload.github.com/BenjiKazzooe/FastAPI-Docker/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246168106,"owners_count":20734390,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["classification","data-science","docker","fastapi","machine-learning","random-forest"],"created_at":"2025-02-04T09:41:49.891Z","updated_at":"2026-05-05T05:36:37.869Z","avatar_url":"https://github.com/BenjiKazzooe.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🚀 FastAPI Dockerized Machine Learning API\n\n## 📌 Projektbeschreibung\n\nDiese API wurde mit **FastAPI** erstellt und dient zur **automatisierten Klassifikation von Tumoren** basierend auf medizinischen Daten. Sie analysiert eine Liste von numerischen Features und gibt eine Vorhersage, ob ein Tumor **bösartig (Malignant) oder gutartig (Benign)** ist. \n\nDas Machine-Learning-Modell basiert auf einem **Random Forest Classifier**, der mit **scikit-learn** trainiert wurde. Der Fokus liegt auf hoher Vorhersagegenauigkeit und einfacher Skalierbarkeit durch den Einsatz von **Docker**. \n\nDurch die Bereitstellung als **Docker-Container** kann die API plattformunabhängig genutzt und problemlos auf verschiedenen Systemen oder in der Cloud bereitgestellt werden.\n\n---\n\n## Voraussetzungen\n\nBevor du startest, stelle sicher, dass folgende Tools installiert sind:\n\n- **Docker** 🐳 → [Download Docker](https://www.docker.com/products/docker-desktop/)  \n  Docker wird benötigt, um den Container mit der API zu erstellen und auszuführen.\n- **Python 3.9+** → Falls du das Projekt lokal ohne Docker testen möchtest.\n\n### 🔍 Überprüfen der Docker-Installation\n\nÖffne das Terminal und führe folgenden Befehl aus:\n\n```bash\ndocker --version\n```\n\nWenn Docker richtig installiert ist, bekommst du eine Ausgabe wie:\n\n```\nDocker version 20.10.14, build e0f593\n```\n\nFalls Docker nicht installiert ist, folge den Anweisungen auf der [offiziellen Docker-Website](https://www.docker.com/products/docker-desktop/).\n\n---\n\n## 📌 Installation \u0026 Setup\n\n### 1. `requirements.txt` erstellen (falls nicht vorhanden)\n\nDie Datei `requirements.txt` enthält alle benötigten Abhängigkeiten für das Projekt. Falls sie fehlt, erstelle sie mit:\n\n```bash\necho -e \"fastapi\\nuvicorn\\nscikit-learn\\npandas\\nnumpy\\nkagglehub\" \u003e requirements.txt\n```\n\n### 2. `Dockerfile` erstellen (falls nicht vorhanden)\n\nFalls das `Dockerfile` nicht existiert, erstelle es mit:\n\n```bash\ntouch Dockerfile\nnano Dockerfile\n```\n\nFüge folgenden Inhalt ein:\n\n```dockerfile\n# Basis-Image mit Python 3.9\nFROM python:3.9\n\n# Arbeitsverzeichnis im Container setzen\nWORKDIR /app\n\n# Anforderungen kopieren und installieren\nCOPY requirements.txt .\nRUN pip install --no-cache-dir -r requirements.txt\n\n# Projektdateien kopieren\nCOPY . .\n\n# Port für FastAPI freigeben\nEXPOSE 8000\n\n# Startbefehl für die API\nCMD [\"uvicorn\", \"api:app\", \"--host\", \"0.0.0.0\", \"--port\", \"8000\", \"--reload\"]\n```\n\nSpeichere die Datei (`CTRL + X`, dann `Y` und `Enter` in Nano).\n\n---\n\n## 🐳 Docker-Container bauen \u0026 starten\n\n### 1. Docker-Image bauen\n\nErstelle das Docker-Image mit folgendem Befehl:\n\n```bash\ndocker build -t fastapi-app .\n```\n\nFalls es Probleme gibt, versuche es ohne Cache:\n\n```bash\ndocker builder prune -a\ndocker build --no-cache -t fastapi-app .\n```\n\n### 2. Docker-Container starten\n\nStarte den Container mit folgendem Befehl:\n\n```bash\ndocker run -d -p 8000:8000 --name fastapi-container fastapi-app\n```\n\n📌 **Erklärung:**\n\n- `-d` → Container läuft im Hintergrund\n- `-p 8000:8000` → Verbindet Port 8000 des Containers mit Port 8000 des Hosts\n- `--name fastapi-container` → Gibt dem Container einen Namen\n- `fastapi-app` → Name des zuvor gebauten Docker-Images\n\n### 🔎 3. Überprüfen, ob der Container läuft\n\n```bash\ndocker ps\n```\n\nFalls dein Container läuft, siehst du eine Ausgabe wie:\n\n```\nCONTAINER ID   IMAGE         COMMAND                  CREATED        STATUS        PORTS                    NAMES\n3de1c64523d7   fastapi-app   \"uvicorn api:app --h…\"   10 seconds ago   Up 9 seconds   0.0.0.0:8000-\u003e8000/tcp   fastapi-container\n```\n\nFalls dein Container **nicht läuft**, Logs anzeigen:\n\n```bash\ndocker logs fastapi-container\n```\n\n---\n\n## 🚀 API testen\n\n### 1. Mit Swagger UI (`http://127.0.0.1:8000/docs`)\n\n1. Öffne [Swagger UI](http://127.0.0.1:8000/docs) im Browser.\n2. Klicke auf `POST /predict`.\n3. Wähle **\"Try it out\"**, gib die Testdaten ein und drücke **\"Execute\"**.\n\n### 2. Mit `curl` (Terminal)\n\n```bash\ncurl -X 'POST' 'http://127.0.0.1:8000/predict' \\\n     -H 'Content-Type: application/json' \\\n     -d '{\"features\": [10.38, 17.77, 122.8, 1001.0, 0.1184, 0.2776, 0.3001, 0.1471, 0.2419, 0.07871, \n                      0.2199, 0.8663, 2.011, 17.95, 0.0141, 0.0461, 0.05999, 0.01738, 0.0233, 0.00743, \n                      21.37, 25.49, 137.9, 1421.0, 0.1959, 0.428, 0.55, 0.2663, 0.4601, 0.1189, 0.1]}'\n```\n\nErwartete Antwort:\n\n```json\n{\n  \"prediction\": \"Malignant\",\n  \"probability_malignant\": 0.72\n}\n```\n\n---\n\n## 🛠 Nützliche Docker-Befehle\n\n| Befehl                          | Beschreibung                             |\n| ------------------------------- | ---------------------------------------- |\n| `docker ps`                     | Laufende Container anzeigen              |\n| `docker ps -a`                  | Alle Container anzeigen (auch gestoppte) |\n| `docker stop fastapi-container` | Container stoppen                        |\n| `docker rm fastapi-container`   | Container löschen                        |\n| `docker logs fastapi-container` | Logs eines Containers anzeigen           |\n\n---\n\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenjikazzooe%2Ffastapi-docker","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbenjikazzooe%2Ffastapi-docker","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbenjikazzooe%2Ffastapi-docker/lists"}