132 lines
4.3 KiB
Markdown
132 lines
4.3 KiB
Markdown
# 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á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 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 (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:
|
||
```bash
|
||
./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:
|
||
```bash
|
||
./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:
|
||
```bash
|
||
./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:
|
||
```bash
|
||
./remove-app.sh
|
||
```
|
||
|
||
## 7. Návod ako si pozrieť aplikáciu na webovom prehliadači
|
||
|
||
### Frontend:
|
||
Otvorte webový prehliadač a zadajte: [http://localhost:3001](http://localhost:3001)
|
||
|
||
### Backend API:
|
||
API je dostupné na: [http://localhost:4000](http://localhost:4000)
|
||
|
||
### MySQL:
|
||
Pripojte sa k databáze na `localhost:3306` pomocou MySQL klienta.
|
||
|