| .. | ||
| backend | ||
| frontend | ||
| .gitignore | ||
| docker-compose.yml | ||
| prepare-app.sh | ||
| README.md | ||
| remove-app.sh | ||
| start-app.sh | ||
| stop-app.sh | ||
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úcané 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ázvomapp-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ámyselne neodstránite.
 
 
4. Opis konfigurácie kontajnerov
MySQL
- Image: 
mysql:8.0.30 - Premenné prostredia:
MYSQL_ROOT_PASSWORD=somepasswordMYSQL_DATABASE=battleship
 - Port: 3306 (mapovaný na localhost:3306)
 - Persistent Volume: 
db_datapripojený 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=3306DB_USER=rootDB_PASSWORD=somepasswordDB_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 volumedb_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 (napr. 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:
./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:
./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:
./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:
./remove-app.sh