Обновить sk1/README.md
This commit is contained in:
parent
564c3ed8ea
commit
372f6f5fcb
116
sk1/README.md
116
sk1/README.md
@ -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)
|
|
||||||
|
|
||||||
---
|
|
Loading…
Reference in New Issue
Block a user