upd
This commit is contained in:
parent
ce9f9cc498
commit
60e47be5b0
142
z1/README.md
142
z1/README.md
@ -0,0 +1,142 @@
|
|||||||
|
# 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:
|
||||||
|
```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: ./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.
|
||||||
|
|
@ -45,7 +45,7 @@ services:
|
|||||||
|
|
||||||
networks:
|
networks:
|
||||||
app-net:
|
app-net:
|
||||||
external: true
|
driver: bridge
|
||||||
|
|
||||||
volumes:
|
volumes:
|
||||||
db_data:
|
db_data:
|
||||||
|
@ -3,25 +3,25 @@
|
|||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
||||||
# Копируем package.json и package-lock.json (если есть)
|
|
||||||
COPY package*.json ./
|
COPY package*.json ./
|
||||||
|
|
||||||
# Устанавливаем зависимости
|
|
||||||
RUN npm install
|
RUN npm install
|
||||||
|
|
||||||
# Копируем исходный код
|
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
# Собираем проект (Vite по умолчанию генерирует папку dist)
|
|
||||||
RUN npm run build
|
RUN npm run build
|
||||||
|
|
||||||
# --- Production stage ---
|
|
||||||
FROM nginx:alpine
|
FROM nginx:alpine
|
||||||
|
|
||||||
# Копируем собранный проект в nginx
|
|
||||||
COPY --from=build /app/dist /usr/share/nginx/html
|
COPY --from=build /app/dist /usr/share/nginx/html
|
||||||
|
|
||||||
# Открываем порт 80 для nginx
|
|
||||||
EXPOSE 80
|
EXPOSE 80
|
||||||
|
|
||||||
CMD ["nginx", "-g", "daemon off;"]
|
CMD ["nginx", "-g", "daemon off;"]
|
||||||
|
@ -65,7 +65,7 @@ function App() {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Функция для сброса состояния и начала новой игры
|
|
||||||
const resetGame = () => {
|
const resetGame = () => {
|
||||||
setStep(0);
|
setStep(0);
|
||||||
setGameId(null);
|
setGameId(null);
|
||||||
|
@ -1,10 +1,10 @@
|
|||||||
|
|
||||||
echo "Preparing app..."
|
echo "Preparing app..."
|
||||||
|
|
||||||
# Создаем сеть, если хотите оставить её внешней
|
|
||||||
docker network inspect app-net >/dev/null 2>&1 || docker network create app-net
|
docker network inspect app-net >/dev/null 2>&1 || docker network create app-net
|
||||||
|
|
||||||
# Собираем образы (backend, frontend) через docker-compose
|
|
||||||
docker-compose build
|
docker-compose build
|
||||||
|
|
||||||
echo "Preparation done."
|
echo "Preparation done."
|
||||||
|
@ -1,11 +1,9 @@
|
|||||||
|
|
||||||
echo "Removing app..."
|
echo "Removing app..."
|
||||||
|
|
||||||
# Останавливаем и удаляем все контейнеры,
|
|
||||||
# а также volume (db_data), образы локальные (если надо)
|
|
||||||
docker-compose down -v --rmi local
|
docker-compose down -v --rmi local
|
||||||
|
|
||||||
# Если хотите удалить и внешнюю сеть:
|
|
||||||
docker network rm app-net || true
|
docker network rm app-net || true
|
||||||
|
|
||||||
echo "App removed completely."
|
echo "App removed completely."
|
||||||
|
Loading…
Reference in New Issue
Block a user