Uvod
Kontejnerizacija je uvelike dobila na zamahu u softverskom tehnološkom prostoru posljednjih godina. To se može pripisati Docker koji je platforma za kontejnerizaciju koja pojednostavljuje upravljanje procesima unutar kontejnera.
Kontejneri su lagana, virtualizirana, prijenosna, softverski definirana standardizirana okruženja koja omogućuju softveru da radi izolirano od drugog softvera koji se izvodi na fizičkom računalu domaćinu. Ova značajka prijenosnosti omogućuje razvojnim programerima da modulariziraju svoje aplikacije u izolirane usluge. Nadalje, mogu se posluživati neovisno, što ostavlja prostor za skaliranje.
Iako je podjela aplikacije na više usluga svakako izvrsna, ona dolazi s opterećenjem upravljanja s nekoliko kontejnera. Morate osigurati da oni komuniciraju, pokreću se i gase u isto vrijeme. Zahvaljujući alatu pod nazivom Docker Compose, to postaje lak zadatak. Docker Compose omogućuje razvojnim programerima pokretanje Docker aplikacija s više kontejnera koristeći pravila definirana u YAML datoteci. YAML datoteka sadrži definicije za usluge aplikacije i način na koji mogu dijeliti podatkovne volumene i mreže. Nakon što definirate usluge, možete ih sve pokrenuti jednom naredbom. U ovom vodiču, pokazat ćemo vam kako instalirati, konfigurirati i započeti s Docker Composeom na Ubuntu 20.04.
Preduvjeti
-
Budući da je ovo praktični vodič, trebali biste imati instaliran Ubuntu 20.04 kao svoje početno operativno okruženje. Također biste trebali imati ne-root korisnika sa sudo privilegijama. Ovdje je vodič korak-po-korak koji će vam pomoći postaviti vaš Ubuntu poslužitelj. Slijedite ovaj vodič kako biste konfigurirali svoju sudoers datoteku.
-
Također morate instalirati Docker. Pogledajte ovaj vodič o tome kako instalirati i upravljati Dockerom na Ubuntu 18.04.
Korak 1: Instalacija Docker Composea
Preuzet ćemo najnoviju stabilnu verziju Docker Composea s njegovog službenog GitHub repozitorija. Najnoviju verziju možete saznati na stranici s izdanjima, u vrijeme pisanja ovog vodiča, najnovija verzija je 1.28.5.
Prvo se prijavite na svoj Ubuntu poslužitelj s ne-root sudo korisnikom i unesite sljedeću naredbu. Ona preuzima najnovije izdanje (1.28.5) i sprema izvršnu datoteku u /usr/local/bin/docker-compose direktorij. To ga čini globalno dostupnim kao docker-compose:
|
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.28.5/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
Nakon što se preuzme, unesite sljedeću naredbu za postavljanje odgovarajućih dopuštenja kako bi naredba docker-compose bila izvršna:
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
Sada provjerite je li instalacija uspjela i može li se naredba pozvati pokretanjem sljedeće naredbe:
|
1 |
docker-compose –version |
Trebali biste dobiti izlaz poput ovog:

Ovo potvrđuje da je Docker Compose uspješno instaliran na vaš sustav.
Korak 2: Stvaranje docker-compose.yml datoteke
Kako bismo vam pomogli razumjeti kako raditi s docker-compose.yml, konfigurirat ćemo okruženje web poslužitelja koristeći službenu Nginx sliku s Docker Hub. Nakon što se postavi, trebali bismo moći posluživati osnovnu HTML stranicu iz kontejnera.
Stvorit ćemo naš radni direktorij u početnoj mapi iz koje ćemo raditi. Unesite sljedeću naredbu za stvaranje direktorija:
|
1 |
mkdir ~/compose-example |
Zatim prijeđite u direktorij:
|
1 |
cd ~/compose-example |
Nakon što uđete u direktorij, stvorite mapu aplikacije koja će biti korijenski direktorij dokumenata za Nginx okruženje. Ovu mapu možemo nazvati app:
|
1 |
mkdir app |
- Stvaranje HTML stranice
Upotrijebimo nano uređivač teksta za stvaranje index.html datoteke unutar mape app:
|
1 |
nano app/index.html |
Zatim dodajte sljedeći HTML kôd u datoteku:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<!DOCTYPE html> <html lang="hr"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="description" content=""> <meta name="generator" content="Hugo 0.80.0"> <title>Primjer Docker Composea</title> <!-- Bootstrap osnovni CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta2/dist/css/bootstrap.min.css" rel="stylesheet" crossorigin="anonymous"> </head> <body> <main> <section class="py-5 text-center container"> <div class="row py-lg-5"> <div class="col-lg-6 col-md-8 mx-auto"> <h1 class="fw-light">Sjajan primjer Docker Composea s CloudSigma</h1> <p class="h4"> Ovo je osnovna statička HTML stranica. </p> <p class="lead text-muted"> Ova se stranica poslužuje iz Nginx Docker spremnika izgrađenog pomoću <b>docker-compose </b> </p> </div> </div> </section> </main> </body> </html> |
Da biste spremili datoteku, pritisnite CTRL +O, ENTER. Zatim zatvorite s CTRL +X. Sljedeće ćemo stvoriti docker-compose.yml datoteku unutar korijenskog direktorija našeg projekta.
- Hostanje HTML stranice pomoću docker-composea
Zatim unesite sljedeću naredbu za otvaranje datoteke pomoću nano uređivača:
|
1 |
nano docker-compose.yml |
Nakon toga dodajte sljedeći isječak koda unutar datoteke:
|
1 2 3 4 5 6 7 8 |
version: '3.7' services: webserver: image: nginx:alpine ports: - "8000:80" volumes: - ./app:/usr/share/nginx/html |
Datoteka docker-compose.yml datoteka započinje brojem verzije koji govori Docker Composeu koju verziju konfiguracije koristimo. Slijedite ovu poveznicu kako biste saznali više o Docker Compose verzijama.
Nakon broja verzije, imamo blok usluga (services) koji sadrži usluge koje čine okruženje. U ovom vodiču naveli smo samo jednu uslugu pod nazivom webserver. webserver usluga koristit će nginx:alpine sliku. Također smo definirali preusmjeravanje portova 8000:80. To znači da će svi zahtjevi s porta 8000 na računalu domaćinu biti preusmjereni na webserver kontejner na portu 80, gdje se izvodi Nginx.
Direktiva volumes omogućuje vam stvaranje dijeljenog volumena između računala domaćina i kontejnera koji možemo koristiti za trajno spremanje podataka. U našem yml isječku koda, dijelimo lokalnu app mapu s kontejnerom. Unutar kontejnera, ona će biti postavljena na lokaciju /usr/share/nginx/html lokaciju. Stoga ona prepisuje zadani korijenski direktorij dokumenata (document root) za Nginx. Sada možete spremiti i zatvoriti datoteku.
Do ove točke stvorili ste svoju primjernu HTML web stranicu i datoteku docker-compose.yml s uputama za izgradnju kontejneriziranog okruženja web poslužitelja. Pogledajmo kako možemo pokrenuti ovo postavljanje u sljedećem koraku.
Korak 3: Izvršavanje naredbe Docker Compose
U ovom koraku pokrenut ćemo naredbu za pokretanje našeg kontejneriziranog okruženja. Ispod je jedinstvena naredba koja će pokrenuti proces preuzimanja Docker slika, stvoriti kontejner za uslugu webserver i pokrenuti kontejnerizirano okruženje u pozadini:
|
1 |
docker-compose up -d |
Docker je dizajniran da bude brz i učinkovit, pa kada pokrenete gornju naredbu, on najprije provjerava vaš lokalni sustav za definiranu sliku. Ako nedostaje, preuzet će je iz repozitorija Docker Hub. Trebao bi prikazati izlaz sličan ovome:

Kada naredba završi s izvršavanjem, pokrenut će okruženje kontejnera koje radi u pozadini. Možete provjeriti radi li pomoću naredbe:
|
1 |
docker-compose ps |
Trebali biste dobiti sličan izlaz:

Ako odete na IP adresu ili naziv domene vašeg poslužitelja i dodate port 8000, tj. server_domain_or_IP:8000 trebali biste moći vidjeti primjernu HTML stranicu koju smo stvorili:

Ako se sjećate, postavili smo dijeljeni volumen između kontejnera i host sustava. To održava datoteke u kontejneru sinkroniziranima s datotekama na host sustavu. Stoga, ako napravite promjenu u index.html datoteci, ona se automatski sinkronizira s kontejnerom i to se odražava kada ponovno učitate stranicu u pregledniku. Možete pokušati s uređivačem nano. Naučimo još neke naredbe u sljedećem koraku.
Korak 4: Dodatne naredbe Docker Compose za upravljanje okruženjima kontejnera
Sada kada ste uspješno postavili web stranicu pomoću jedne docker-compose-up naredbe, pogledajmo neke dodatne naredbe koje mogu biti korisne u upravljanju kontejneriziranim okruženjima.
Započet ćemo s naredbom logs. Zapisi (logs) mogu biti ključni kada rješavate probleme s neuspjehom rada vaše aplikacije. Prvo pokrenite sljedeću naredbu za pregled zapisa koje je stvorio Nginx kontejner:
|
1 |
docker-compose logs |
Evo primjera izlaza zapisa:

Možete pauzirati izvršavanje okruženja bez promjene stanja kontejnera pomoću naredbe:
|
1 |
docker-compose pause |
![]()
Zatim, za otkazivanje pauze ili nastavak izvršavanja koristite naredbu:
|
1 |
docker-compose unpause |
![]()
Možda ćete htjeti zaustaviti kontejnere bez uništavanja njihovih podataka. Da biste to učinili, upotrijebite sljedeću naredbu:
|
1 |
docker-compose stop |
![]()
Za uništavanje kontejnera, mreža i volumena povezanih s kontejneriziranim okruženjem, koristite naredbu:
|
1 |
docker-compose down |
![]()
Imajte na umu da prethodna naredba ne uklanja bazne slike koje Docker Compose koristi za pokretanje okruženja. To osigurava bržu izgradnju kada pokrenete svoje okruženje, jer provjerava lokalno računalo za podudarne slike. Ako želite potpuno ukloniti baznu sliku, morate je navesti u naredbi. Za naš primjer, možemo ukloniti nginx:alpine sliku pomoću naredbe:
|
1 |
docker image rm nginx:alpine |

Naposljetku, više naredbi možete pronaći u službenoj Docker Compose Command-line reference dokumentaciji.
Zaključak
U ovom ste vodiču instalirali Docker Compose na Ubuntu 20.04, stvorili kontejnerizirano okruženje temeljeno na slici Nginx web poslužitelja i naučili kako upravljati različitim uslugama pomoću Docker Compose naredbi.
Ako želite naučiti kako implementirati stvarnu dinamičku aplikaciju koja ovisi o nekoliko kontejnera, pročitajte naš vodič o implementaciji Laravela, Nginxa i MySQL-a s Docker Composeom. Također možete pronaći potpuni popis docker-compose naredbi u službenoj Docker Compose dokumentaciji.
Ugodan rad!
Komentari
Još nema komentara. Budite prvi.