.. | ||
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ámyselne 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 (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).
Môže tiež odstrániť externú sieť.
Spustenie: ./remove-app.sh
Poznámka:
Ak chcete zachovať dáta v databáze medzi spusteniami, neodstraňujte persistent volume (odstráňte parameter -v v 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 obľúbeného MySQL klienta.
8. Príklad práce s aplikáciou
./prepare-app.sh
Preparing app...
... (vypíšu sa informácie o sieti, zostavení obrazov, atď.)
./start-app.sh
Starting app...
App is running.
Frontend is available at: http://localhost:3001
Backend is available at: http://localhost:4000
MySQL is available at: localhost:3306
./stop-app.sh
Stopping app...
App stopped. You can run ./start-app.sh to resume.
./remove-app.sh
Removing app...
App removed completely.