Обновить 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 ## Použité cloudové a kontajnerové technológie
- **Verejný cloud:** - **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:** - **Docker:**
Nasadenie aplikácie je plne založené na Docker kontajneroch. Použité sú kontajnery pre: Nasadenie aplikácie je plne založené na Docker kontajneroch. Použité sú kontajnery pre:
- **Elasticsearch** pre fulltext vyhľadávanie a ukladanie indexov. - **Elasticsearch** pre fulltext vyhľadávanie a ukladanie indexov.
- **PostgreSQL** ako databáza s perzistentným zväzkom (volume `pgdata`). - **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. - **Frontend** klientská časť, ktorá komunikuje s backendom.
- **Nginx:** - **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). 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,62 +21,86 @@ Health AI Assistant je webová aplikácia, ktorá umožňuje používateľom reg
## Obsah odovzdávaných súborov a konfigurácia ## Obsah odovzdávaných súborov a konfigurácia
V repozitári su nasledovné súbory a adresáre: 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`.
- **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 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: - **Dockerfile** pre jednotlivé komponenty:
- `./elasticsearch/Dockerfile` Konfigurácia Elasticsearch, vrátane nastavení environmentálnych premenných. - `./elasticsearch/Dockerfile`
- `./Backend/Dockerfile` Konfigurácia backendovej Flask aplikácie. - `./Backend/Dockerfile`
- `./frontend/Dockerfile` Konfigurácia frontendovej aplikácie. - `./frontend/Dockerfile`
- **Skripty:** - **Skripty:**
- **prepare-app.sh** Skript, ktorý zostaví (build) a spustí celú aplikáciu pomocou docker-compose. - `prepare-app.sh` zostaví a spustí aplikáciu pomocou `docker-compose up --build -d`
- **stop-app.sh** Skript, ktorý zastaví všetky služby. - `stop-app.sh` zastaví bežiace kontajnery
- **start-app.sh** Skript, ktorý spustí služby, ktoré boli len zastavené. - `start-app.sh` spustí zastavené kontajnery
- **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ť. - `remove-app.sh` odstráni kontajnery, siete a volume
- **Nginx konfigurácia**
- **Nginx konfigurácia**:
Súbor `/etc/nginx/sites-available/healthai-tuke.com` (nasadený na AWS) zabezpečuje: Súbor `/etc/nginx/sites-available/healthai-tuke.com` (nasadený na AWS) zabezpečuje:
- Presmerovanie HTTP na HTTPS. - Presmerovanie HTTP na HTTPS.
- Reverzný proxy, ktorý smeruje požiadavky: - Reverzný proxy pre `/api/` na backend (port 5000), a ostatné na frontend (port 5173).
- `/api/` na backend (Flask, port 5000).
- Ostatné požiadavky 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 ## Ako pozrieť a použiť aplikáciu
1. Otvorte webový prehliadač a zadajte adresu: 1. Otvorte webový prehliadač a zadajte adresu:
`https://healthai-tuke.com` `https://healthai-tuke.com`
2. Používateľské rozhranie vám umožní: 2. Funkcie aplikácie:
- Registráciu a prihlásenie. - Registrácia a prihlásenie
- Spustenie chatu so systémom. - Interaktívny chat
- Prezeranie histórie konverzácií. - 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. 3. API rozhranie je možné použiť pomocou:
- curl
## Podmienky pre spustenie skriptov - Postman
- čalšie frontend požiadavky
- **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`.
## Zoznam externých zdrojov ## Zoznam externých zdrojov
- **Externé zdroje a dokumentácia:** - [Docker Documentation](https://docs.docker.com)
- [Docker Documentation](https://docs.docker.com) - [Docker Compose Documentation](https://docs.docker.com/compose/)
- [Docker Compose Documentation](https://docs.docker.com/compose/) - [Nginx Documentation](https://nginx.org/en/docs/)
- [Nginx Documentation](https://nginx.org/en/docs/) - [Let's Encrypt Certbot Documentation](https://certbot.eff.org)
- [Let's Encrypt Certbot Documentation](https://certbot.eff.org) - [Google OAuth 2.0](https://developers.google.com/identity/protocols/oauth2)
- [Google OAuth 2.0](https://developers.google.com/identity/protocols/oauth2) - [PostgreSQL Documentation](https://www.postgresql.org/docs/)
- [PostgreSQL Documentation](https://www.postgresql.org/docs/) - [Sentence Transformers Documentation](https://www.sbert.net)
- [Sentence Transformers Documentation](https://www.sbert.net) - [Hugging Face Hub Documentation](https://huggingface.co/docs)
- [Hugging Face Hub Documentation](https://huggingface.co/docs)
---