zkt25/z1
2025-03-14 21:32:36 +01:00
..
backend 2 2025-03-14 20:26:06 +01:00
frontend upd 2025-03-14 21:32:36 +01:00
.gitignore 2 2025-03-14 20:26:06 +01:00
docker-compose.yml upd 2025-03-14 21:32:36 +01:00
prepare-app.sh upd 2025-03-14 21:32:36 +01:00
README.md upd 2025-03-14 21:32:36 +01:00
remove-app.sh upd 2025-03-14 21:32:36 +01:00
start-app.sh upd 2025-03-14 20:38:37 +01:00
stop-app.sh 2 2025-03-14 20:26:06 +01:00

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á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 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 (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.