Обновить sk1/README.md

This commit is contained in:
Vladyslav Korzun 2025-04-13 21:01:14 +00:00
parent 5b381d2391
commit ac5e514e90

View File

@ -1,72 +1,111 @@
# **Správa Používateľov - Docker Aplikácia**
# Dokumentácia k projektu: Webová aplikácia s nasadením v Azure
## **1. Podmienky na nasadenie a spustenie aplikácie**
Aby ste mohli aplikáciu spustiť, musíte mať nainštalované:
- **Linux** (napr. Ubuntu vo WSL, alebo iná distribúcia)
- **Docker** (https://docs.docker.com/get-docker/)
- **Docker Compose** (https://docs.docker.com/compose/install/)
## Čo robí aplikácia
## **2. Opis aplikácie**
Aplikácia poskytuje jednoduché webové rozhranie na správu používateľov. Používateľlia sú uložení v databáze PostgreSQL a aplikácia ich dokáže pridávať alebo mazať cez jednoduché API a webové rozhranie.
Aplikácia je jednoduchý webový systém na správu používateľov. Umožňuje:
## **3. Opis virtuálnych sietí a pomenovaných zväzkov**
- **Virtuálna sieť `app_network`** - Umožňuje komunikáciu medzi kontajnermi (web, db, pgAdmin).
- **Pomenovaný zväzok `pgdata`** - Používa sa na trvalé uloženie databázových údajov PostgreSQL, aby sa nestratili pri reštarte kontajnerov.
- 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.
## **4. Opis konfigurácie kontajnerov**
Aplikácia používa **Docker Compose**, kde sú definované tri kontajnery:
- **Web** (Flask aplikácia)
- Počúva na porte **5000**
- Komunikuje s databázou `db`
- **DB** (PostgreSQL)
- Používa volume `pgdata` na trvalé uloženie údajov
- Počúva na porte **5432**
- **pgAdmin** (Grafické rozhranie na správu PostgreSQL)
- Počúva na porte **8080**
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.
## **5. Zoznam použitých kontajnerov**
- **Web (Flask)** - Používa Python 3.9 a Flask na poskytovanie webovej aplikácie.
- **PostgreSQL** - Používa obraz `postgres:13`, databázu `mydatabase`.
- **pgAdmin** - Používa obraz `dpage/pgadmin4`, port **8080**.
## Použitý verejný cloud a služby
## **6. Ako pripraviť, spustiť, pozastaviť a vymazať aplikáciu**
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:
### **Príprava aplikácie:**
```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
```
Týmto príkazom sa vytvorí sieť, volume a pripraví databáza.
### **Spustenie aplikácie:**
```bash
./start-app.sh
```
Aplikácia sa spustí a bude dostupná na **http://localhost:5000**.
### `remove-app.sh`
### **Pozastavenie aplikácie:**
```bash
./stop-app.sh
```
Pozastavenie aplikácie neodstráni údaje.
- vyžaduje prístup k tým istým zdrojom v Azure ako `prepare-app.sh`,
- spustenie:
### **Vymazanie aplikácie:**
```bash
chmod +x remove-app.sh
./remove-app.sh
```
Tento príkaz **vymaže všetky kontajnery, sieť a volume**, čo znamená, že **databáza bude kompletne vymazaná**.
## **7. Ako si pozrieť aplikáciu v prehliadači**
- **Hlavná aplikácia:** [http://localhost:5000](http://localhost:5000)
- **pgAdmin (správa databázy):** [http://localhost:8080](http://localhost:8080)
## Zoznam externých zdrojov a použitie generatívneho modelu
## **8. Príklad práce s aplikáciou**
Pri vytváraní dokumentácie a ladení skriptov bol použitý generatívny model **ChatGPT 4.0**, ktorý pomohol:
### **Pridanie používateľa:**
1. Otvorte aplikáciu na **http://localhost:5000**
2. Zadajte meno do textového poľa.
3. Kliknite na **"Pridať"**.
4. Používateľ sa uloží do databázy a zobrazí na stránke.
- pri kontrole syntaxe Bash skriptov,
- s optimalizáciou Azure CLI príkazov a ich poradie,
- pri generovaní častí tejto dokumentácie.
### **Odstránenie používateľa:**
1. Kliknite na tlačidlo **"Odstrániť"** pri konkrétnom používateľovi.
2. Používateľ bude vymazaný z databázy.
Všetky ostatné časti projektu (frontend, backend, Dockerfile, štruktúra aplikácie) boli vytvorené manuálne bez použitia šablón alebo generátorov.