Dobrodošli na vežbu iz dokerizacije! Vaš zadatak je da funkcionalnu aplikaciju, koja se trenutno sastoji samo od izvornog koda, upakujete u kontejnere i omogućite njihovu međusobnu komunikaciju koristeći Docker.
Aplikacija je jednostavan "Student Dashboard" koji prati broj poseta. Sastoji se od:
- Klijenta: HTML/JavaScript klijent.
- Servera: FastAPI (Python) aplikacija.
- Baze podataka: Redis (In-memory storage).
Potrebno je kreirati ukupno više servisa (razmislite koliko vam zapravo treba :D) unutar jedne Docker mreže. Vaš posao je da napišete uputstva za "izgradnju" kontejnera i definišete kako oni sarađuju.
Unutar foldera /backend potrebno je kreirati Dockerfile.
- Potrebno je definisati base image.
- Instalirajte neophodne biblioteke navedene u kodu - koristite Google da saznate koje biblioteke vam trebaju :D.
- Aplikacija treba da sluša na odgovarajućem portu - koristite Google da saznate koji je default port :D.
- Napomena: Razmislite kako će backend znati gde se nalazi Redis baza u Docker mreži.
Unutar foldera /frontend potrebno je kreirati Dockerfile.
- Hint: HTML je statička stvar, kako možemo da ga izvršimo?
- Web server treba da bude dostupan (standardni port za HTTP).
U korenu projekta kreirajte compose.yaml (ili docker-compose.yml) koji će povezati sve delove.
- Servis 1 (Baza): Potreban vam je image za Redis. Nije potreban Dockerfile, samo ga definišite u compose-u.
- Servis 2 (Backend): Povežite ga sa folderom za build i osigurajte da se podiže tek nakon što baza bude spremna.
- Servis 3 (Frontend): Povežite ga sa folderom za build i mapirajte portove tako da aplikaciji možete pristupiti preko browsera (npr. port 8080 ili 80 na vašoj mašini).
Kada kreirate sve fajlove, pokrenite aplikaciju.