.. | ||
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úč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=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 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.