Ensret jeres udviklingsmiljø med Docker

De seneste år har Docker været et af de helt store buzz-ord inden for webudvikling, og har man arbejdet med webudvikling på den ene eller anden måde, har det været umuligt ikke at lægge mærke til.

Af Jens Just Iversen

05. SEP 2018

Docker er dog ikke kun et buzz-ord, som mange kan lide at snakke om, det er i høj grad et vigtigt og brugbart værktøj, som er en del af mange programmørers hverdag.

Docker er et såkaldt container software, der lader dig drifte et vilkårligt serversetup på din egen maskine. Som webudvikler vil dette oftest være en webserver, altså en server, der kan eksekvere en hjemmeside. Vi arbejder som regel med et Linux-setup, hvor det klassiske stack består af Apache/Nginx, PHP og MySQL.

Selvom det er relativt få programmer, findes der mange versioner af både operativsystem, PHP og MySQL, og som en samlet kombination er sammensætningerne næsten uanede.

Bruger man ikke Docker eller et lignende software, som for eksempel Vagrant, der kan simulere et specifikt serversetup, vil man komme ud for, at de små forskelle i setups vil betyde fejl under udviklingen. En programmør kan måske have installeret MySQL version X på sin Mac mens en anden programmør kan have installeret MySQL version Y på sin PC. Nu er der allerede en del forskel på udviklingsmiljøerne, og fejl, der kan tage lang tid at fejlsøge og rette, står klar til at blive opdaget.

Når man arbejder som et team, er det en stor hjælp, at alle har det præcis samme udviklingsmiljø og det kan Docker - blandt andre - hjælpe med.

I praksis

Docker er bygget op om containere, som er en “pakke” der indeholder alt for at køre et givent stykke software. Et eksempel på en container kan være “mysql:5.7”, som er en såkaldt native container, som Docker selv stiller til rådighed.

Man har oftest behov for mere end blot én container, og i sådan et tilfælde kan man enten bygge sin egen “tykke” container, der indeholder alle de programmer og services man skal bruge, eller sammensætte en docker-compose.yml-fil, der indeholder de forskellige containere man skal bruge - for eksempel Nginx, MySQL og PHP.

I praksis vil det man kunne lægge en docker-compose.yml-fil med i sit repository på for eksempel GitHub eller BitBucket, og alle udviklere, der arbejder på samme projekt vil nemt og hurtigt kunne starte webserveren op for projektet, ved at køre “docker-compose up” i kommandolinjen. Efter et øjeblik kan siden tilgås på udviklerens lokale maskine, og siden bliver eksekveret ens uanset, om programmøreren bruger Linux, macOS eller Windows.

Fordelene

Udover de åbenlyse fordele ved et ensartet udviklingsmiljø er en af grundene til, at Docker er blevet så populært, at det ikke bruger nært så mange ressourcer som de øvrige alternativer.

Derudover er der et stort community, der udbyder alverdens forskellige containere, og det er nemt at bygge sine egne. Disse kan desuden også udbydes til community’et. Dette foregår på Docker Hub.

Docker udbyder som tidligere nævnt en række officielle containere, som nemt kan blive nyttige. Her findes blandt andet containere til Nginx, MySQL og PHP, som alle kan hentes i forskellige versioner.

Med en docker-compose.yml-fil i jeres repository af kodebasen, får man desuden en fælles tracking, hvis der skulle ske ændringer af server setup’et, og undgår derved at glemme at fortælle sin kollega, hvis man foretager ændringer i sit udviklingsmiljø. Nu er docker-compose.yml jeres fælles udgangspunkt, ligesom composer.json er for jeres Composer pakker, og package.json er for jeres npm pakker.

Afslutning

Vi har hos ephort oplevet vores antal af fejl afledt af forskellige udviklingsmiljøer, og er ligesom så mange andre blevet glade for Docker grundet den nemme tilgang til et meget værdifuldt værktøj.

Vi anbefaler ikke blot at komme i gang med Docker med det samme på grund af den ensretning man oplever, men fordi vi er sikre på, at I vil opleve at få stor glæde af det.

Så vær med til at øge kvaliteten af dansk webudvikling, og kom i gang med Docker med det samme :-)