Обновить sk1/README.md

This commit is contained in:
Oleh Poiasnik 2025-04-13 12:10:57 +00:00
parent 564c3ed8ea
commit 372f6f5fcb

View File

@ -7,12 +7,12 @@ Health AI Assistant je webová aplikácia, ktorá umožňuje používateľom reg
## Použité cloudové a kontajnerové technológie
- **Verejný cloud:**
Aplikácia je nasadená na AWS EC2, pričom bol použitý Elastic IP, aby bol verejný IP adresa statická.
Aplikácia je nasadená na AWS EC2, pričom bol použitý Elastic IP, aby bola verejná IP adresa statická.
- **Docker:**
Nasadenie aplikácie je plne založené na Docker kontajneroch. Použité sú kontajnery pre:
- **Elasticsearch** pre fulltext vyhľadávanie a ukladanie indexov.
- **PostgreSQL** ako databáza s perzistentným zväzkom (volume `pgdata`).
- **Backend** Flask aplikácia, ktorá spracúva API požiadavky.
- **Backend** Flask aplikácia, ktorá spracúvala API požiadavky.
- **Frontend** klientská časť, ktorá komunikuje s backendom.
- **Nginx:**
Ako reverzný proxy server je nastavený Nginx pre zabezpečený prístup cez HTTPS. Certifikát je získaný pomocou Certbot (Let's Encrypt).
@ -21,55 +21,81 @@ Health AI Assistant je webová aplikácia, ktorá umožňuje používateľom reg
## Obsah odovzdávaných súborov a konfigurácia
V repozitári su nasledovné súbory a adresáre:
- **docker-compose.yml** Definuje štyri služby (elasticsearch, postgres, backend, frontend) a sieť `app-network`.
V repozitári sú nasledovné súbory a adresáre:
- **docker-compose.yml** definuje štyri služby (elasticsearch, postgres, backend, frontend) a sieť `app-network`.
- Pre každú službu je definovaný aj parameter `restart: always`, ktorý zabezpečuje automatický reštart v prípade chyby.
- Pre postgres je definovaný persistent volume `pgdata`.
- Pre Postgres je definovaný persistent volume `pgdata`.
- **Dockerfile** pre jednotlivé komponenty:
- `./elasticsearch/Dockerfile` Konfigurácia Elasticsearch, vrátane nastavení environmentálnych premenných.
- `./Backend/Dockerfile` Konfigurácia backendovej Flask aplikácie.
- `./frontend/Dockerfile` Konfigurácia frontendovej aplikácie.
- `./elasticsearch/Dockerfile`
- `./Backend/Dockerfile`
- `./frontend/Dockerfile`
- **Skripty:**
- **prepare-app.sh** Skript, ktorý zostaví (build) a spustí celú aplikáciu pomocou docker-compose.
- **stop-app.sh** Skript, ktorý zastaví všetky služby.
- **start-app.sh** Skript, ktorý spustí služby, ktoré boli len zastavené.
- **remove-app.sh** Skript, ktorý úplne odstráni všetky kontajnery, siete a volume, čím zabezpečí, že aplikáciu je možné rýchlo zrušiť.
- **Nginx konfigurácia**
- `prepare-app.sh` zostaví a spustí aplikáciu pomocou `docker-compose up --build -d`
- `stop-app.sh` zastaví bežiace kontajnery
- `start-app.sh` spustí zastavené kontajnery
- `remove-app.sh` odstráni kontajnery, siete a volume
- **Nginx konfigurácia**:
Súbor `/etc/nginx/sites-available/healthai-tuke.com` (nasadený na AWS) zabezpečuje:
- Presmerovanie HTTP na HTTPS.
- Reverzný proxy, ktorý smeruje požiadavky:
- `/api/` na backend (Flask, port 5000).
- Ostatné požiadavky na frontend (port 5173).
- Reverzný proxy pre `/api/` na backend (port 5000), a ostatné na frontend (port 5173).
## AWS EC2 Deployment Automatization
Pre jednoduché nasadenie, správu a odstránenie inštancií v AWS EC2 boli pridané skripty do adresára `aws config`:
| Skript | Popis |
|--------|-------|
| `deploy-instance.sh` | Vytvorí nový EC2 inštanciu, priradí k nej Elastic IP a vypíše jej IP adresu. |
| `setup-docker.sh` | Nainštaluje Docker, Docker Compose a Git na čerstvo nasadený EC2 server. |
| `setup-nginx-certs.sh` | Skopíruje certifikáty z Let's Encrypt na server a nakonfiguruje Nginx ako reverzný proxy s HTTPS. |
| `start-instance.sh` | Spustí poslednú zastavenú EC2 inštanciu. |
| `stop-instance.sh` | Zastaví poslednú bežiacu EC2 inštanciu. |
| `terminate.sh` | Zastaví a odstráni poslednú bežiacu EC2 inštanciu. |
| `connect.sh` | Pripojí sa k bežiacej EC2 inštancii cez SSH pomocou `.pem` kľúča. |
### Požiadavky
- Nainštalovaný AWS CLI
- Prístup k `.pem` súkromnému kľúču
- Nastavené identifikátory: `eipalloc-...`, `subnet-...`, `ami-...`, `sg-...`
### Ukážka použitia
```bash
# Vytvorenie a pripojenie inštancie
./aws\ config/deploy-instance.sh
./aws\ config/setup-docker.sh
./aws\ config/setup-nginx-certs.sh
# Pripojenie
./aws\ config/connect.sh
# Zastavenie alebo zrušenie
./aws\ config/stop-instance.sh
./aws\ config/terminate.sh
```
## Ako pozrieť a použiť aplikáciu
1. Otvorte webový prehliadač a zadajte adresu:
`https://healthai-tuke.com`
2. Používateľské rozhranie vám umožní:
- Registráciu a prihlásenie.
- Spustenie chatu so systémom.
- Prezeranie histórie konverzácií.
2. Funkcie aplikácie:
- Registrácia a prihlásenie
- Interaktívny chat
- Prezeranie histórie konverzácií
3. Pre prístup k API môžu používatelia testovať požiadavky pomocou nástrojov ako Postman, curl alebo priamo cez Frontend, ktorý komunikuje s backendom.
## Podmienky pre spustenie skriptov
- **prepare-app.sh:**
Tento skript zostaví a spustí celú aplikáciu pomocou príkazu `docker-compose up --build -d`. Skript by sa mal spúšťať z koreňového adresára repozitára, kde sa nachádza súbor `docker-compose.yml`.
- **stop-app.sh:**
Skript zastaví všetky bežiace kontajnery pomocou príkazu `docker-compose stop`.
- **start-app.sh:**
Tento skript spustí kontajnery, ktoré boli len zastavené, pomocou príkazu `docker-compose start`.
- **remove-app.sh:**
Skript úplne odstráni vytvorené kontajnery, siete a persistent volume príkazom `docker-compose down --volumes --remove-orphans`.
3. API rozhranie je možné použiť pomocou:
- curl
- Postman
- čalšie frontend požiadavky
## Zoznam externých zdrojov
- **Externé zdroje a dokumentácia:**
- [Docker Documentation](https://docs.docker.com)
- [Docker Compose Documentation](https://docs.docker.com/compose/)
- [Nginx Documentation](https://nginx.org/en/docs/)
@ -78,5 +104,3 @@ V repozitári su nasledovné súbory a adresáre:
- [PostgreSQL Documentation](https://www.postgresql.org/docs/)
- [Sentence Transformers Documentation](https://www.sbert.net)
- [Hugging Face Hub Documentation](https://huggingface.co/docs)
---