112 lines
4.3 KiB
Markdown
112 lines
4.3 KiB
Markdown
# Dokumentácia k projektu: Webová aplikácia s nasadením v Azure
|
||
|
||
## Čo robí aplikácia
|
||
|
||
Aplikácia je jednoduchý webový systém na správu používateľov. Umožňuje:
|
||
|
||
- zobrazovať zoznam používateľov uložených v databáze PostgreSQL,
|
||
- náhodne vybrať jedného používateľa,
|
||
- pridávať a odstraňovať používateľov cez frontend a REST API.
|
||
|
||
Frontend je napísaný v HTML a komunikácia so serverom je zabezpečená cez Flask. Dáta sú uložené v Azure PostgreSQL Flexible Serveri.
|
||
|
||
## Použitý verejný cloud a služby
|
||
|
||
Pre nasadenie aplikácie bol použitý **Microsoft Azure**. Zvolené služby:
|
||
|
||
- **Azure Resource Group**: slúži ako kontajner pre všetky ostatné zdroje.
|
||
- **Azure Container Registry (ACR)**: privátny Docker registry, kde je uchovaný obraz aplikácie.
|
||
- **Azure Container Apps**: služba na spustenie kontajнеризованных aplikácií bez potreby správy infraštruktúry.
|
||
- **Azure Database for PostgreSQL Flexible Server**: cloudová databáza na ukladanie dát používateľov.
|
||
- **Docker**: použitý na vytvorenie obrazu aplikácie.
|
||
- **psql**: klient na komunikáciu s databázou.
|
||
|
||
Aplikácia nemá explicitne definované trvalé zväzky, ale využíva trvalé úložisko databázy.
|
||
|
||
## Prehľad súborov a konfigurácií
|
||
|
||
### `prepare-app.sh`
|
||
|
||
Hlavný skript, ktorý zabezpečuje kompletné nasadenie aplikácie. Vykonáva:
|
||
|
||
- vytvorenie resource group (ak neexistuje),
|
||
- vytvorenie Azure Container Registry (ACR) a aktiváciu admin režimu,
|
||
- čakanie, kým sa ACR stane dostupným,
|
||
- vytvorenie PostgreSQL Flexible Servera a firewall pravidla,
|
||
- čakanie na stav **Ready** po vytvorení databázy,
|
||
- zmenu hesla administrátora databázy (pre istotu),
|
||
- build Docker obrazu a jeho push do ACR,
|
||
- vytvorenie Azure Container Environment (ak neexistuje),
|
||
- vytvorenie alebo aktualizáciu Container App so všetkými premennými prostredia (DB),
|
||
- vytvorenie tabuľky `users` v databáze cez psql.
|
||
|
||
Tento skript je navrhnutý tak, aby bol **idempotentný** — spustenie viackrát nevedie k zlyhaniu.
|
||
|
||
### `remove-app.sh`
|
||
|
||
Skript, ktorý zabezpečuje vymazanie všetkých vytvorených zdrojov:
|
||
|
||
- vymaže Container App, ak existuje,
|
||
- vymaže Container App Environment, ak existuje,
|
||
- vymaže databázový server, ak existuje,
|
||
- vymaže obraz z ACR, ak existuje.
|
||
|
||
Podmienky overujú existenciu každého zdroja pred pokusom o jeho vymazanie.
|
||
|
||
## Ostatné súbory
|
||
|
||
- `Dockerfile` – definuje obraz aplikácie, založený na `python:3.9-slim`, kopíruje kód, inštaluje závislosti a nastaví CMD.
|
||
- `requirements.txt` – obsahuje zoznam Python knižníc: Flask, psycopg2-binary, atď.
|
||
- `app.py` – samotná aplikácia (Flask server), obsahuje REST API aj HTML render.
|
||
- `start-app.sh`, `stop-app.sh` – pomocné skripty pre lokálne spustenie.
|
||
- `docker-compose.yml` – konfigurácia na spustenie aplikácie a databázy lokálne (nepovinné).
|
||
|
||
## Návod na spustenie v prehliadači
|
||
|
||
Po úspešnom spustení `prepare-app.sh` aplikácia bude nasadená v Azure Container Apps. Presná URL bude vygenerovaná Azure službou a vyzerá napríklad takto:
|
||
|
||
```
|
||
https://userapp.randomhash.region.azurecontainerapps.io/
|
||
```
|
||
|
||
Túto adresu je možné získať príkazom:
|
||
|
||
```bash
|
||
az containerapp show --name userapp --resource-group userapp-rg --query properties.configuration.ingress.fqdn -o tsv
|
||
```
|
||
|
||
Po otvorení tejto adresy v prehliadači sa zobrazí frontend aplikácie.
|
||
|
||
## Podmienky pre spustenie skriptov
|
||
|
||
### `prepare-app.sh`
|
||
|
||
- potrebné mať nainštalovaný **Azure CLI** (`az`) a byť prihlásený (`az login`),
|
||
- musí byť prítomné prostredie s Dockerom a `psql` klientom (`sudo apt install postgresql-client`),
|
||
- skript možno spustiť príkazom:
|
||
|
||
```bash
|
||
chmod +x prepare-app.sh
|
||
./prepare-app.sh
|
||
```
|
||
|
||
### `remove-app.sh`
|
||
|
||
- vyžaduje prístup k tým istým zdrojom v Azure ako `prepare-app.sh`,
|
||
- spustenie:
|
||
|
||
```bash
|
||
chmod +x remove-app.sh
|
||
./remove-app.sh
|
||
```
|
||
|
||
## Zoznam externých zdrojov a použitie generatívneho modelu
|
||
|
||
Pri vytváraní dokumentácie a ladení skriptov bol použitý generatívny model **ChatGPT 4.0**, ktorý pomohol:
|
||
|
||
- pri kontrole syntaxe Bash skriptov,
|
||
- s optimalizáciou Azure CLI príkazov a ich poradie,
|
||
- pri generovaní častí tejto dokumentácie.
|
||
|
||
Všetky ostatné časti projektu (frontend, backend, Dockerfile, štruktúra aplikácie) boli vytvorené manuálne bez použitia šablón alebo generátorov.
|