zkt25/sk1/README.md

4.5 KiB
Raw Blame History

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 skriptov prepare-app.sh, stop-app.sh, start-app.sh a remove-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.
  • Dockerfile pre jednotlivé komponenty:

    • ./elasticsearch/Dockerfile
    • ./Backend/Dockerfile
    • ./frontend/Dockerfile
  • Skripty:

    • 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 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

# 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. Funkcie aplikácie:

    • Registrácia a prihlásenie
    • Interaktívny chat
    • Prezeranie histórie konverzácií
  3. API rozhranie je možné použiť pomocou:

    • curl
    • Postman
    • čalšie frontend požiadavky

Zoznam externých zdrojov