| .. | ||
| aws config | ||
| Backend | ||
| elasticsearch | ||
| frontend | ||
| docker-compose.yml | ||
| prepare.sh | ||
| README.md | ||
| remove-app.sh | ||
| start-app.sh | ||
| stop-app.sh | ||
Health AI Assistant
Opis aplikácie
Health AI Assistant je webová aplikácia, ktorá umožňuje používateľom registráciu, prihlásenie, interaktívny chat a prezeranie histórie konverzácií. Aplikácia využíva generatívny model (pomocou Mistral) na spracovanie dotazov a poskytovanie odpovedí. Používateľom poskytuje možnosť overenia pomocou Google OAuth a uchováva dáta v databáze PostgreSQL.
Použité cloudové a kontajnerové technológie
- Verejný cloud:
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ú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). - Skripty:
Nasadenie a zrušenie aplikácie sa automatizuje pomocou skriptovprepare-app.sh,stop-app.sh,start-app.sharemove-app.sh.
Obsah odovzdávaných súborov a konfigurácia
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 každú službu je definovaný aj parameter
-
Dockerfile pre jednotlivé komponenty:
./elasticsearch/Dockerfile./Backend/Dockerfile./frontend/Dockerfile
-
Skripty:
prepare-app.sh– zostaví a spustí aplikáciu pomocoudocker-compose up --build -dstop-app.sh– zastaví bežiace kontajnerystart-app.sh– spustí zastavené kontajneryremove-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 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
.pemsúkromnému kľúču - Nastavené identifikátory:
eipalloc-...,subnet-...,ami-...,sg-...
Ukážka použitia
# 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
Podmienky pre spustenie skriptov
-
prepare-app.sh:
Tento skript zostaví a spustí celú aplikáciu pomocou príkazudocker-compose up --build -d. Skript by sa mal spúšťať z koreňového adresára repozitára, kde sa nachádza súbordocker-compose.yml. -
stop-app.sh:
Skript zastaví všetky bežiace kontajnery pomocou príkazudocker-compose stop. -
start-app.sh:
Tento skript spustí kontajnery, ktoré boli len zastavené, pomocou príkazudocker-compose start. -
remove-app.sh:
Skript úplne odstráni vytvorené kontajnery, siete a persistent volume príkazomdocker-compose down --volumes --remove-orphans.
Ako pozrieť a použiť aplikáciu
-
Otvorte webový prehliadač a zadajte adresu:
https://healthai-tuke.com -
Funkcie aplikácie:
- Registrácia a prihlásenie
- Interaktívny chat
- Prezeranie histórie konverzácií
-
API rozhranie je možné použiť pomocou:
- curl
- Postman
- čalšie frontend požiadavky