| .. | ||
| backend | ||
| frontend | ||
| .gitignore | ||
| deployment.yaml | ||
| docker-compose.yml | ||
| namespace.yaml | ||
| prepare-app.sh | ||
| README.md | ||
| remove-app.sh | ||
| service.yaml | ||
| start-app.sh | ||
| statefulset.yaml | ||
| 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úč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á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ámselne 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 (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
7. Návod ako si pozrieť aplikáciu na webovom prehliadači
Frontend:
Otvorte webový prehliadač a zadajte: http://localhost:3001
Backend API:
API je dostupné na: http://localhost:4000
MySQL:
Pripojte sa k databáze na localhost:3306 pomocou MySQL klienta.