Većina deployment problema počinje kao problem okruženja.
Aplikacija radi na jednoj mašini, baza je malo drugačije konfigurirana na drugoj, a produkcija počne ponašati se na načine koje nitko nije očekivao. Docker ne uklanja svu tu složenost, ali daje jednu runtime definiciju koja može putovati između okruženja.
Standardizirajte runtime prvo
Trenutna Docker dokumentacija i dalje se vrti oko iste glavne ideje: pakirajte aplikaciju i njezine dependencyje u container tako da se isto ponaša kroz sustave.
To je prava vrijednost za male timove. Ne pokušavate izgraditi savršenu platformu. Pokušavate učiniti lokalni razvoj, previewje i produkciju manje iznenadenjima.
Ako image sadrži aplikaciju, entrypoint i potrebne runtime pakete, tim može debugirati isto okruženje prije i nakon deploya.
Držite konfiguraciju izvan imagea
Image treba opisivati kako aplikacija radi. Postavke specifične za okruženje trebaju ostati izvan imagea.
To obično znači:
- environment variables za tajne i API kljuceve,
- compose ili deployment datoteke za wiring servisa,
- mounted volume samo gdje je potrebna perzistencija,
- odvojenu konfiguraciju za staging i produkciju.
To image čini ponovno upotrebljivim umjesto vezanim za jedan server.
Koristite Docker da smanjite, ne sakrijete, složenost
Containeri nisu razlog da prestanete razmišljati o arhitekturi.
Ako aplikaciji treba Nginx ispred nje, dodajte Nginx jer ima stvaran posao. Ako je site statican, nemojte u image stavljati dodatne procese samo zato što stanu. Docker treba runtime učiniti predvidljivim, a ne zamagliti što deploy zapravo radi.
Zato Docker najbolje radi kada container ostane mali i kada je posao svakog sloja očit.
Pazite na operations creep
Kad Docker proradi, lako je sve gurnuti unutra.
To je obično greška. Logging, reverse proxy pravila, backupovi i provisioniranje različite su brige. Docker je najjači kada pokriva execution environment, a okolni alati sve ostalo.
Ako timu kasnije treba orchestration ili multi-service obrasci, može ih dodati bez mijenjanja temeljnog navika eksplicitne runtime definicije.
Zaključak
Docker je najvrjedniji kada timu pomaže izbjeci pogadanje oko toga kako aplikacija radi. Što je manje razlika između lokalnog, preview i produkcijskog okruženja, to je sustav lakši za podržati.
Reference: Docker.
Povezane usluge
Savjetodavna područja vezana uz ovu temu
Ove su usluge usklađene s temom članka i daju čišći prijelaz od edukativnog sadržaja do konkretne implementacije.
Nastavite čitati
Povezani članci
Prvo po zajedničkim kategorijama, a zatim po najjačem preklapanju u tagovima.