Docker Compose je moćan i popularan alat koji se koristi za upravljanje i implementaciju aplikacija temeljenih na Docker. Omogućuje vam da definirate, konfigurirate i pokrenete više Docker spremnika kao jedan projekt, pojednostavljujući implementaciju aplikacije i osiguravajući dosljednost između razvojnih i proizvodnih okruženja.
U nastavku su neki koncepti i primjeri Docker Compose:
Definirajte projekt pomoću datoteke docker-compose.yml
U docker-compose.yml
datoteci možete definirati usluge koje su potrebne za vašu aplikaciju. Na primjer, za implementaciju PHP web aplikacije s MySQL bazom podataka, možete definirati dvije usluge na sljedeći način:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "80:80"
volumes:
- ./app:/var/www/html
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: my_database
U gornjem isječku koda definiramo dvije usluge: web
i db
. Usluga web
će koristiti PHP 7.4 image s Apache, slušati na priključku 80 i montirati ./app
direktorij s glavnog računala u /var/www/html
direktorij u container. Usluga db
će koristiti MySQL 5.7 image i postaviti neke varijable okruženja potrebne za bazu podataka.
Korištenje Docker Compose naredbe
Nakon što definirate projekt u datoteci docker-compose.yml
, možete koristiti Docker Compose naredbe za upravljanje uslugama.
-
Započnite projekt:
docker-compose up
Ova naredba će pokrenuti spremnike za usluge definirane u datoteci
docker-compose.yml
. -
Zaustavite i uklonite spremnike:
docker-compose down
Ova naredba zaustavlja i uklanja sve spremnike koji se odnose na projekt.
-
Popis aktivnih spremnika:
docker-compose ps
Ova naredba će prikazati status spremnika u projektu.
-
Pogledajte dnevnike usluge:
docker-compose logs
Ova naredba prikazuje zapisnike usluga u projektu.
Varijable okruženja i prilagodba
Docker Compose omogućuje vam korištenje varijabli okruženja za prilagodbu konfiguracija za različita okruženja, kao što su razvoj i proizvodnja. Možete koristiti varijable okruženja u docker-compose.yml
datoteci i definirati njihove vrijednosti u odgovarajućim .env
datotekama.
Na primjer, ako želite definirati varijablu okruženja za priključak usluge web
, možete dodati redak u .env
datoteku ovako:
WEB_PORT=8080
Zatim, u docker-compose.yml
datoteci, možete koristiti ovu varijablu okoline ovako:
version: "3"
services:
web:
image: php:7.4-apache
ports:
- "${WEB_PORT}:80"
volumes:
- ./app:/var/www/html
Prilikom pokretanja docker-compose up
naredbe, web
usluga će slušati na portu 8080 umjesto na portu 80.
Integracija sa Docker Swamom
Ako želite implementirati svoju aplikaciju u distribuiranom okruženju s više čvorova, Docker Compose možete se integrirati s Docker Swarm. To vam omogućuje upravljanje uslugama na više čvorova u Docker klasteru.
Da biste koristili ovu integraciju, samo trebate dodati opcije --orchestrate
ili --with-registry-auth
prilikom izvođenja naredbi docker stack deploy
ili docker-compose up
u Swarm okruženju.
Docker Compose je koristan alat za jednostavan i učinkovit razvoj aplikacija, testiranje i implementaciju. Minimizira razlike između razvojnih i proizvodnih okruženja, osigurava dosljednost u procesu razvoja softvera i povećava produktivnost razvojnih timova.