zkt25/sk1
2025-04-13 21:05:00 +00:00
..
scripts Загрузить файлы в «sk1/scripts» 2025-04-13 21:03:06 +00:00
static Загрузить файлы в «sk1/static» 2025-04-13 21:03:24 +00:00
templates Загрузить файлы в «sk1/templates» 2025-04-13 21:03:51 +00:00
app.py Загрузить файлы в «sk1» 2025-04-13 21:00:58 +00:00
docker-compose.yml Загрузить файлы в «sk1» 2025-04-13 21:00:58 +00:00
Dockerfile Загрузить файлы в «sk1» 2025-04-13 21:00:58 +00:00
prepare-app.sh Загрузить файлы в «sk1» 2025-04-13 21:00:58 +00:00
README.md Обновить sk1/README.md 2025-04-13 21:05:00 +00:00
remove-app.sh Загрузить файлы в «sk1» 2025-04-13 21:00:58 +00:00
requirements.txt Загрузить файлы в «sk1» 2025-04-13 21:00:58 +00:00
start-app.sh Загрузить файлы в «sk1» 2025-04-13 21:00:58 +00:00
stop-app.sh Загрузить файлы в «sk1» 2025-04-13 21:00:58 +00:00

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