zkt25/z1/README.md
2025-03-14 21:53:03 +01:00

132 lines
4.3 KiB
Markdown
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.

# Battleship Web Application
## 1. Podmienky na nasadenie a spustenie
Na spustenie tejto aplikácie je potrebný nasledujúci softvér:
- **Docker** (nainštalovaný a správne nakonfigurovaný)
- **Docker Compose** (verzia 3.8 a vyššia)
- **Bash** (pre spúšťanie skriptov)
Odporúčané prostredie: Linux alebo Windows s nainštalovaným WSL2.
## 2. Opis aplikácie
Táto webová aplikácia predstavuje jednoduchú hru Battleship. Aplikácia je rozdelená na tri hlavné služby:
- **Frontend:** Webové rozhranie, kde hráči zadávajú svoje mená, umiestňujú svoje lode a hrajú hru.
- **Backend:** Serverová logika, ktorá spracováva požiadavky od frontendu, komunikuje s databázou a ukladá výsledky hier.
- **Databáza (MySQL):** Ukladá trvalé dáta informácie o hrách, výsledkoch a nastaveniach. Dáta sú uchovávané v persistent volume, aby prežili reštarty kontajnerov.
## 3. Opis virtuálnych sietí a pomenovaných zväzkov
### Virtuálna sieť
- **app-net:**
Všetky kontajnery (frontend, backend, MySQL) bežia v rámci jednej Docker siete s názvom `app-net`.
- Ak sieť nie je vytvorená, skripty ju vytvoria.
- Sieť umožňuje vzájomnú komunikáciu kontajnerov pomocou mien služieb (napr. backend pristupuje k databáze pomocou mena `mysql`).
### Pomenované zväzky
- **db_data:**
Tento persistent volume je pripojený k službe MySQL a ukladá dáta (obsah databázy) na ceste `/var/lib/mysql`.
- Zabezpečuje, že aj pri reštarte alebo odstránení kontajnera sa dáta nevymažú, pokiaľ ich zámselne neodstránite.
## 4. Opis konfigurácie kontajnerov
### MySQL
- **Image:** `mysql:8.0.30`
- **Premenné prostredia:**
- `MYSQL_ROOT_PASSWORD=somepassword`
- `MYSQL_DATABASE=battleship`
- **Port:** 3306 (mapovaný na localhost:3306)
- **Persistent Volume:** `db_data` pripojený na `/var/lib/mysql`
- **Sieť:** `app-net`
- **Reštart:** `unless-stopped`
### Backend
- **Build:** Dockerfile v priečinku `./backend`
- **Port:** 4000 (mapovaný na localhost:4000)
- **Environment Variables:**
- `DB_HOST=mysql` (meno služby MySQL v rámci docker-compose)
- `DB_PORT=3306`
- `DB_USER=root`
- `DB_PASSWORD=somepassword`
- `DB_NAME=battleship`
- **Závislosť:** Závisí od služby MySQL (nastavené v `depends_on`)
- **Sieť:** `app-net`
- **Reštart:** `unless-stopped`
### Frontend
- **Build:** Dockerfile v priečinku `./frontend`
- **Port:** 80 (mapovaný na localhost:3001)
- **Závislosť:** Závisí od backendu (nastavené v `depends_on`)
- **Sieť:** `app-net`
- **Reštart:** `unless-stopped`
## 5. Zoznam použitých kontajnerov a ich stručný opis
- **battleship_mysql:**
Beží MySQL databáza, ktorá ukladá trvalé dáta aplikácie. Používa persistent volume `db_data`.
- **battleship_backend:**
Node.js aplikácia, ktorá poskytuje API pre hru, komunikuje s databázou a spracováva hernú logiku.
- **battleship_frontend:**
Webové rozhranie aplikácie (React), prostredníctvom ktorého hráči interagujú s hrou.
## 6. Návod ako pripraviť, spustiť, pozastaviť a vymazať aplikáciu
Súčasťou projektu sú štyri skripty:
### Príprava aplikácie
**prepare-app.sh**
Tento skript:
- Vytvorí externú sieť `app-net` (ak ešte neexistuje).
- Zostaví Docker obrazy pre MySQL, backend a frontend prostredníctvom docker-compose.
Spustenie:
```bash
./prepare-app.sh
```
### Spustenie aplikácie
**start-app.sh**
Tento skript:
- Spustí všetky kontajnery (MySQL, backend, frontend) pomocou `docker-compose up -d`.
- Vypíše informácie o dostupnosti aplikácie.
Spustenie:
```bash
./start-app.sh
```
### Pozastavenie aplikácie
**stop-app.sh**
Tento skript:
- Pozastaví všetky služby, pričom dáta v databáze ostanú zachované (persistent volume).
Spustenie:
```bash
./stop-app.sh
```
### Odstránenie aplikácie
**remove-app.sh**
Tento skript:
- Odstráni všetky vytvorené kontajnery, obrazy a persistent volume (ak sa použije parameter `-v`).
Spustenie:
```bash
./remove-app.sh
```
## 7. Návod ako si pozrieť aplikáciu na webovom prehliadači
### Frontend:
Otvorte webový prehliadač a zadajte: [http://localhost:3001](http://localhost:3001)
### Backend API:
API je dostupné na: [http://localhost:4000](http://localhost:4000)
### MySQL:
Pripojte sa k databáze na `localhost:3306` pomocou MySQL klienta.