zkt26/zadanie 1/README.md
2026-03-22 12:58:49 +01:00

157 lines
4.2 KiB
Markdown
Executable File
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Blog Dokumentacia
Osobný blog nasadený pomocou Docker Compose. Sklada sa zo styroch sluzieb beziacich v samostatnych kontajneroch.
# Popis aplikacie
Webová aplikacia umoznuje:
- prezerať zoznam blogových príspevkov
- citat jednotlive prispevky
- vytvarat a upravovat nove príspevky
- spravovat databazu cez pgAdmin webove rozhranie
# Podmienky nasadenia
Softver | Minimálna verzia
Linux (Ubuntu/Debian/Fedora)
Docker Engine | 24.0
Docker Compose (plugin) | 2.20
Overenie instalacie:
```bash
docker --version
docker compose version
```
# Architektura prehlad sluzieb
```
Priehliadac -> Nginx(proxy - port 80) -> Backend(Node.js) -> DB(Postgres) <- pgAdmin
| ^
| |
------------------------------------------------------------
port 8080
# Zoznam kontajnerov
| Kontajner | Obraz | Port | Popis |
| `blog-nginx` | `nginx:alpine` | `80` | Webserver pre frontend + reverse proxy na backend |
|`blog-backend` | vlastny build | interny `3000` | Node.js REST API, komunikuje s DB |
| `blog-db` | `postgres:16-alpine`| interny `5432` | PostgreSQL databaza, uchovava prispevky |
| `blog-pgadmin` | `dpage/pgadmin4` | `8080` | Webove rozhranie pre spravu databazy |
## Virtuálne siete
# `blog-network`
- Interna Docker siet, do ktorej su zapojene vsetky styri kontajnery
- Kontajnery sa navzajom adresuju cez db
- Z hostovského pocitaca su zvonka dostupne len služby s mapovanym portom (`nginx` na 80, `pgadmin` na 8080)
## Trvale zvazky
# `db-data`
- Typ: pomenovay zvazok (managed volume)
- Pripojeny na: `/var/lib/postgresql/data` v kontajneri `blog-db`
- ucel: data PostgreSQL databazy (prispevky blogu) preziju restart alebo zmazanie kontajnera
- Zvazok sa zachova pri `stop-app.sh`, zmaze sa len pri `remove-app.sh`
# Konfigurácia kontajnerov
## Nginx
- Staticke subory frontendu su namontovane z `./frontend` do `/usr/share/nginx/html` (read-only)
- Vlastna konfiguracia z `nginx.conf` nahradza predvolenu
- Vsetky requesty na `/api/*` presmeruje na `http://backend:3000` (reverse proxy, v praxi to zlepsuje bezpecnost
navstevnika stranky resp. uzivatela)
# Backend (Node.js)
- Zostavany z `./backend/Dockerfile` na zaklade obrazu `node:20-alpine`
- Konfiguracia databazy sa predava cez premenne prostredia (`DB_HOST`, `DB_USER`, atd.)
- Startuje az po tom, co DB kontajner hlasi `healthy` (healthcheck)
# PostgreSQL
- pri prvom starte automaticky spusti `./backend/init.sql` vytvori tabulku a vlozi ukazkovy prispevok
- data uklada do zvazku `db-data`
# pgAdmin
- oredvolene prihlasenie: `admin@blog.local` / `admin`
- po prihlaseni je potrebne manualne pridat server s udajmi: host `db`, port `5432`, db `blog`,
user `blog_user`, heslo `blog_pass`
## Navod na manazment aplikacie
# Priprava (jednorazovo)
```
./prepare-app.sh
```
# Spustenie
```
./start-app.sh
```
# Zastavenie (ulozi sa stav)
```
./stop-app.sh
```
# Opatovne spustenie
```
./start-app.sh
```
# Uplne odstranenie
```
./remove-app.sh
```
# Pristup cez prehliadac
| URL | Popis |
|---|---|
| `http://localhost` | Blog zoznam prispevkov |
| `http://localhost/new-post.html` | Formular na novy prispevok |
| `http://localhost:8080` | pgAdmin sprava databazy |
## Pouzite zdroje
- [Docker dokumentácia](https://docs.docker.com/)
- [Docker Compose dokumentácia](https://docs.docker.com/compose/)
- [Express.js dokumentácia](https://expressjs.com/)
- [node-postgres (pg) dokumentácia](https://node-postgres.com/)
- [Nginx dokumentácia](https://nginx.org/en/docs/)
- [PostgreSQL dokumentácia](https://www.postgresql.org/docs/)
## Použitie umelej inteligencie
Pri tvorbe projektu bol použitý AI asistent Claude (Anthropic, claude.ai).
Použitie:
- Navrh architektúry aplikácie a výber technológií
- Generovanie kostry kodu (`server.js`, `db.js`, HTML stránky)
- Úprava Docker konfigurácie (`docker-compose.yaml`, `nginx.conf`, `Dockerfile`)
- Generovanie grafickej úpravy tejto dokumentácie
- interne CSS v index.html
Všetok vygenerovaný kód bol preštudovaný, pochopený a upravovaný. Komentáre v kóde odrážajú
vlastné porozumenie danej problematiky.