.. | ||
scripts | ||
static | ||
templates | ||
app.py | ||
docker-compose.yml | ||
Dockerfile | ||
prepare-app.sh | ||
README.md | ||
remove-app.sh | ||
requirements.txt | ||
start-app.sh | ||
stop-app.sh |
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ý napython: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.thankfulhill-d9204543.northeurope.azurecontainerapps.io
Túto adresu je možné získať príkazom:
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:
./prepare-app.sh
remove-app.sh
- vyžaduje prístup k tým istým zdrojom v Azure ako
prepare-app.sh
, - spustenie:
./remove-app.sh
Zoznam externých zdrojov a použitie generatívneho modelu
bol použitý generatívny model ChatGPT