Projekt przedstawia kompletny pipeline DevOps CI/CD dla aplikacji webowej napisanej w Python Flask.
System automatycznie:
- buduje obraz Dockera
- publikuje go w Docker Hub
- wdraża aplikację na serwerze po każdym
git push - aktualizuje działającą aplikację bez ręcznej ingerencji
Dodatkowo projekt zawiera monitoring (Prometheus + Grafana).
https://projektdyplomowy.ddns.net
https://github.com/krzyniot/first-devops-project
https://hub.docker.com/r/krzyniot/devops-project
┌────────────────────┐
│ Developer │
│ (git push) │
└─────────┬──────────┘
│
▼
┌────────────────────┐
│ GitHub Repo │
└─────────┬──────────┘
│
▼
┌────────────────────┐
│ GitHub Actions CI │
│ build + deploy │
└─────────┬──────────┘
│
┌─────────────────┴─────────────────┐
▼ ▼
┌───────────────┐ ┌─────────────────┐
│ Docker Image │ │ SSH Deploy │
│ build & push │ │ na serwer │
└──────┬────────┘ └────────┬────────┘
│ │
▼ ▼
┌───────────────┐ ┌─────────────────┐
│ Docker Hub │ │ Docker Container│
└───────────────┘ │ Flask App │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Nginx Reverse │
│ Proxy + HTTPS │
└────────┬────────┘
│
▼
┌──────────┐
│ User │
└──────────┘
Monitoring:
Flask (/metrics)
↓
Prometheus
↓
Grafana (dashboard)
- Python / Flask
- Docker
- Git / GitHub
- GitHub Actions (CI/CD)
- Docker Hub
- Nginx
- Let's Encrypt (SSL)
- Prometheus
- Grafana
- Linux Ubuntu Server
Zwraca wersję aplikacji
DevOps Project Krzysztof Trojańczuk - version 5.0
OK
Zwraca wersję aplikacji
Metryki Prometheus:
- liczba requestów
- CPU procesu
- pamięć
- statystyki Pythona
docker run -d -p 5000:5000 krzyniot/devops-project
Plik:
.github/workflows/pipeline.yml
Pipeline:
- checkout kodu
- build obrazu Docker
- push do Docker Hub
- SSH deploy na serwer
- restart kontenera
Proces działania:
- Zmiana wersji:
VERSION = "5.0"
- Commit i push:
git add .
git commit -m "release 5.0"
git push
- GitHub Actions automatycznie:
- buduje obraz
- publikuje do Docker Hub
- wykonuje deploy
- Aplikacja aktualizuje się automatycznie:
https://projektdyplomowy.ddns.net
Nginx → Flask (port 5000)
Certyfikat:
Let's Encrypt (certbot)
Zbiera metryki z:
- aplikacji (
/metrics) - node-exporter (CPU, RAM)
- samego Prometheusa
Dashboard zawiera:
- użycie CPU serwera
- zużycie pamięci
- liczba wszystkich requestów
- ruch w czasie (request/sec)
100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)
(node_memory_MemTotal_bytes - node_memory_MemAvailable_bytes) / node_memory_MemTotal_bytes * 100
rate(app_requests_total[1m])
app_requests_total
Projekt pokazuje pełny proces DevOps:
- zarządzanie kodem (Git)
- automatyczny pipeline CI/CD
- konteneryzację (Docker)
- automatyczny deploy
- wystawienie aplikacji przez HTTPS
- monitoring aplikacji i serwera
Krzysztof Trojańczuk