Nahrát soubory do „z1“
This commit is contained in:
commit
e625e0ae55
116
z1/README.md
Normal file
116
z1/README.md
Normal file
@ -0,0 +1,116 @@
|
||||
#Dokumentácia k nasadeniu webovej aplikácie
|
||||
|
||||
##Podmienky na nasadenie a spustenie
|
||||
|
||||
Na správne nasadenie a spustenie aplikácie je potrebné mať nainštalovaný nasledujúci softvér:
|
||||
|
||||
- Operačný systém: Linux (testované na Ubuntu, ale môže fungovať aj na iných distribúciách)
|
||||
|
||||
- Docker: Nástroj na kontajnerizáciu aplikácií (stiahnuť Docker)
|
||||
|
||||
- Docker Compose: Nástroj na orchestráciu viacerých kontajnerov (stiahnuť Docker Compose)
|
||||
|
||||
Odporúčame overiť správnu inštaláciu spustením príkazov:
|
||||
|
||||
docker --version
|
||||
docker-compose --version
|
||||
|
||||
Opis aplikácie
|
||||
|
||||
Táto aplikácia je jednoduchý webový systém, ktorý obsahuje frontendovú a backendovú časť:
|
||||
|
||||
Frontend: React aplikácia, ktorá poskytuje webové rozhranie pre používateľov.
|
||||
|
||||
Backend: API server napísaný v Pythone (FastAPI alebo Flask), ktorý spracováva požiadavky od frontendu.
|
||||
|
||||
Aplikácia umožňuje používateľom interakciu cez webový prehliadač, pričom backend spracováva požiadavky a odosiela odpovede. Systém je navrhnutý tak, aby bol jednoduchý na nasadenie pomocou Dockeru.
|
||||
|
||||
Používané virtuálne siete a zväzky
|
||||
|
||||
Aplikácia využíva Docker Compose na vytvorenie izolovanej siete a spravovanie dát.
|
||||
|
||||
Virtuálna sieť: Docker Compose automaticky vytvorí vlastnú sieť, ktorá zabezpečuje komunikáciu medzi frontendom a backendom.
|
||||
|
||||
Pomenované zväzky: Použité na ukladanie perzistentných dát v prípade potreby, napríklad ak by aplikácia mala databázu alebo logy.
|
||||
|
||||
Konfigurácia kontajnerov
|
||||
|
||||
Aplikácia sa skladá z dvoch kontajnerov:
|
||||
|
||||
Frontend:
|
||||
|
||||
Port: 5174:5174
|
||||
|
||||
Závislosť: backend (musí byť dostupný pre správne fungovanie frontendu)
|
||||
|
||||
Automatické reštartovanie: always (zabezpečí opätovné spustenie v prípade výpadku)
|
||||
|
||||
Vytvára sa zo súborov v priečinku frontend/
|
||||
|
||||
Backend:
|
||||
|
||||
Port: 5000:5000
|
||||
|
||||
Automatické reštartovanie: always
|
||||
|
||||
Obsahuje hlavné API aplikácie a spracováva požiadavky od frontendu
|
||||
|
||||
Vytvára sa zo súborov v priečinku backend/
|
||||
|
||||
Používané kontajnery
|
||||
|
||||
V aplikácii sú použité tieto kontajnery:
|
||||
|
||||
Frontend:
|
||||
|
||||
Technológia: React
|
||||
|
||||
Poskytuje webové rozhranie aplikácie
|
||||
|
||||
Beží na porte 5174
|
||||
|
||||
Backend:
|
||||
|
||||
Technológia: Python (FastAPI/Flask)
|
||||
|
||||
Spracováva požiadavky z frontendu
|
||||
|
||||
Beží na porte 5000
|
||||
|
||||
Príručka pre nasadenie
|
||||
|
||||
Na nasadenie aplikácie postupujte podľa nasledujúcich krokov:
|
||||
|
||||
Príprava aplikácie:
|
||||
|
||||
./prepare-app.sh
|
||||
|
||||
Tento krok vytvorí potrebné Docker obrazy a pripraví aplikáciu na spustenie.
|
||||
|
||||
Spustenie aplikácie:
|
||||
|
||||
./start-app.sh
|
||||
|
||||
Po spustení bude aplikácia dostupná na http://localhost:5174
|
||||
|
||||
Pozastavenie aplikácie:
|
||||
|
||||
./stop-app.sh
|
||||
|
||||
Tento príkaz zastaví všetky bežiace kontajnery bez ich odstránenia.
|
||||
|
||||
Odstránenie aplikácie:
|
||||
|
||||
./remove-app.sh
|
||||
|
||||
Tento príkaz odstráni všetky vytvorené kontajnery a ich dáta.
|
||||
|
||||
Príklad použitia
|
||||
|
||||
Po spustení aplikácie otvorte webový prehliadač a prejdite na http://localhost:5174. Na stránke by sa mala zobraziť webová aplikácia, ktorá komunikuje s backendom.
|
||||
|
||||
Ak backend správne funguje, môžete skúsiť odoslať požiadavku cez terminál:
|
||||
|
||||
curl -X POST http://localhost:5000/api/predict -H "Content-Type: application/json" -d '{"input": "some_data"}'
|
||||
|
||||
Tento príkaz by mal vrátiť odpoveď z backendu, čo znamená, že komunikácia medzi frontendom a backendom je funkčná.
|
||||
16
z1/docker-compose.yaml
Normal file
16
z1/docker-compose.yaml
Normal file
@ -0,0 +1,16 @@
|
||||
version: ''
|
||||
|
||||
services:
|
||||
frontend:
|
||||
build: ./frontend
|
||||
ports:
|
||||
- "5174:5174"
|
||||
depends_on:
|
||||
- backend
|
||||
restart: always
|
||||
|
||||
backend:
|
||||
build: ./backend
|
||||
ports:
|
||||
- "5000:5000"
|
||||
restart: always
|
||||
124
z1/package-lock.json
generated
Normal file
124
z1/package-lock.json
generated
Normal file
@ -0,0 +1,124 @@
|
||||
{
|
||||
"name": "zkt25",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.7.2",
|
||||
"@fortawesome/react-fontawesome": "^0.2.2",
|
||||
"react-icons": "^5.5.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@fortawesome/fontawesome-common-types": {
|
||||
"version": "6.7.2",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.7.2.tgz",
|
||||
"integrity": "sha512-Zs+YeHUC5fkt7Mg1l6XTniei3k4bwG/yo3iFUtZWd/pMx9g3fdvkSK9E0FOC+++phXOka78uJcYb8JaFkW52Xg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/@fortawesome/fontawesome-svg-core": {
|
||||
"version": "6.7.2",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.7.2.tgz",
|
||||
"integrity": "sha512-yxtOBWDrdi5DD5o1pmVdq3WMCvnobT0LU6R8RyyVXPvFRd2o79/0NCuQoCjNTeZz9EzA9xS3JxNWfv54RIHFEA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-common-types": "6.7.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/@fortawesome/free-brands-svg-icons": {
|
||||
"version": "6.7.2",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.7.2.tgz",
|
||||
"integrity": "sha512-zu0evbcRTgjKfrr77/2XX+bU+kuGfjm0LbajJHVIgBWNIDzrhpRxiCPNT8DW5AdmSsq7Mcf9D1bH0aSeSUSM+Q==",
|
||||
"license": "(CC-BY-4.0 AND MIT)",
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-common-types": "6.7.2"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
}
|
||||
},
|
||||
"node_modules/@fortawesome/react-fontawesome": {
|
||||
"version": "0.2.2",
|
||||
"resolved": "https://registry.npmjs.org/@fortawesome/react-fontawesome/-/react-fontawesome-0.2.2.tgz",
|
||||
"integrity": "sha512-EnkrprPNqI6SXJl//m29hpaNzOp1bruISWaOiRtkMi/xSvHJlzc2j2JAYS7egxt/EbjSNV/k6Xy0AQI6vB2+1g==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"prop-types": "^15.8.1"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@fortawesome/fontawesome-svg-core": "~1 || ~6",
|
||||
"react": ">=16.3"
|
||||
}
|
||||
},
|
||||
"node_modules/js-tokens": {
|
||||
"version": "4.0.0",
|
||||
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
|
||||
"integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/loose-envify": {
|
||||
"version": "1.4.0",
|
||||
"resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
|
||||
"integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"js-tokens": "^3.0.0 || ^4.0.0"
|
||||
},
|
||||
"bin": {
|
||||
"loose-envify": "cli.js"
|
||||
}
|
||||
},
|
||||
"node_modules/object-assign": {
|
||||
"version": "4.1.1",
|
||||
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
|
||||
"integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/prop-types": {
|
||||
"version": "15.8.1",
|
||||
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
|
||||
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"loose-envify": "^1.4.0",
|
||||
"object-assign": "^4.1.1",
|
||||
"react-is": "^16.13.1"
|
||||
}
|
||||
},
|
||||
"node_modules/react": {
|
||||
"version": "19.0.0",
|
||||
"resolved": "https://registry.npmjs.org/react/-/react-19.0.0.tgz",
|
||||
"integrity": "sha512-V8AVnmPIICiWpGfm6GLzCR/W5FXLchHop40W4nXBmdlEceh16rCN8O8LNWm5bh5XUX91fh7KpA+W0TgMKmgTpQ==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=0.10.0"
|
||||
}
|
||||
},
|
||||
"node_modules/react-icons": {
|
||||
"version": "5.5.0",
|
||||
"resolved": "https://registry.npmjs.org/react-icons/-/react-icons-5.5.0.tgz",
|
||||
"integrity": "sha512-MEFcXdkP3dLo8uumGI5xN3lDFNsRtrjbOEKDLD7yv76v4wpnEq2Lt2qeHaQOr34I/wPN3s3+N08WkQ+CW37Xiw==",
|
||||
"license": "MIT",
|
||||
"peerDependencies": {
|
||||
"react": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/react-is": {
|
||||
"version": "16.13.1",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
||||
"integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==",
|
||||
"license": "MIT"
|
||||
}
|
||||
}
|
||||
}
|
||||
8
z1/package.json
Normal file
8
z1/package.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"dependencies": {
|
||||
"@fortawesome/fontawesome-svg-core": "^6.7.2",
|
||||
"@fortawesome/free-brands-svg-icons": "^6.7.2",
|
||||
"@fortawesome/react-fontawesome": "^0.2.2",
|
||||
"react-icons": "^5.5.0"
|
||||
}
|
||||
}
|
||||
4
z1/prepare-app.sh
Normal file
4
z1/prepare-app.sh
Normal file
@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
echo "Príprava aplikácie..."
|
||||
docker-compose build
|
||||
echo "Aplikácia je pripravená!"
|
||||
5
z1/remove-app.sh
Normal file
5
z1/remove-app.sh
Normal file
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
echo "Odinštalovanie aplikácie..."
|
||||
docker-compose down -v
|
||||
docker rmi $(docker images -q)
|
||||
echo "Aplikácia bola úplne vymazaná!"
|
||||
4
z1/start-app.sh
Normal file
4
z1/start-app.sh
Normal file
@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
echo "Spustenie aplikácie..."
|
||||
docker-compose up -d
|
||||
echo "Aplikácia je k dispozícii na adrese http://localhost:5174"
|
||||
4
z1/stop-app.sh
Normal file
4
z1/stop-app.sh
Normal file
@ -0,0 +1,4 @@
|
||||
#!/bin/bash
|
||||
echo "Zastavenie aplikácie..."
|
||||
docker-compose down
|
||||
echo "Aplikácia bola zastavená!"
|
||||
Loading…
Reference in New Issue
Block a user