Docker on suosittu avoin open source ohjelmistoalusta, jolla voidaan hallita ohjelmistoja ns. konttien avulla. Kontti kerää yhteen ohjelmiston osat ja riippuvuudet siten, että ohjelmisto voidaan siirtää sellaisenaan ympäristöstä ja alustasta toiseen ilman että sitä täytyy muokata. Esimerkiksi kehitys voi tapahtua paikallisella koneella ja tuotantoversiota ajetaan pilvessä olevalla palvelimella.
YAML
YAML (“Yaml ain’t Markup Language”) on standardi merkintäkieli, jolla kuvataan, miten Docker käyttää erilaisia resursseja. YAML on JSON-tiedostomuodosta johdettu standardi, jota on alettu käyttämään erilaisten ohjelmistojen konfigurointiin eli sen asetusten säätämiseen. Yksi YAML-merkintäkielen etu on se, että se voi sisältää kommenttirivejä, joka tekee siitä ihmiselle helppolukuisemman kuin JSON.
YAML-kielessä sisennys on tärkeää. Jokainen sisennys tehdään käyttäen kahta välilyöntiä, ei tabulaattoria. Määrittelylohkoja ei eroteta toisistaan tunnistemerkillä, kuten puolipiste.
Docker compose on komento, joka kääntää, käynnistää ja hallitsee tai lopulta poistaa erilaisia palveluja. Sen perusosia ovat
image eli asennuskuva
context eli ajoaikainen ympäristö
dockerfile eli määrittelytiedosto
args eli parametrit
volumet eli looginen levyvaraus
environment lei ympäristö
verkkoasetukset
Image eli asennuskuva on käännettävän tai ladattavan koontiversion nimi.
Context kertoo, mitä hakemistoa käytetään Docker-määrittelytiedostolle. Se voi olla myös URL-osoite git repositoryyn.
Dockerfile on tekstidokumentti, joka sisältää komennot, joiden avulla käyttäjä voisi komentoriviltä kääntää toimivan koontiversion. Käytännössä se sisältää komennot ja metatietoa, joiden avulla Docker luo ohjelman käännöksen. Oletusnimi on “Dockerfile”, mutta Dockerfile voi olla eri niminen, ja se löytyy Context-määrittelyn osoittamasta paikasta.
Parametrit
Kontin käyttämä portti määritellään docker compose tiedostossa seuraavasti listana
ports:
- ”2000:2000”
- ”3333:3333”
YAML-kielessä lista määritellään antamalla listalle nimi (”ports”) ja kaksoispiste. Sen alla sisennettynä on listan arvot.
Portit tulee kirjoittaa sulkumerkkien sisälle.
Volumet
Volume on levyvaraus (volume), jonka sisältämät tiedot säilyy myös sen jälkeen kun kontti on poistettu. Isäntäympäristön hakemisto voidaan linkittää kontissa olevaksi hakemistoksi ja kun kontti pysäytetään, sen käsittelemät tiedot tallentuvat tähän hakemistoon.
Ympäristömuuttujat
Ympäristömuuttujat kertovat Dockerille, mitä versionumeroa tai tunnistetta tulee käyttää kun kontissa oleva ohjelma suoritetaan. Ympäristömuuttuja määritellään YAML-tiedostossa käyttäen YAML-listaa
environment:
- VARIABLE=value
- APP_VERSION=1.0
Määritellyt ympäristömuuttujat ovat saatavilla kontissa ajettavalle ympäristölle. Ympäristömuuttujia ei tarvitse ympäröidä lainausmerkeillä.
Jos ympäristömuuttujia on runsaasti, ne voidaan lukea tiedostosta. Tämä määritellään env_file-listana
env_file:
- ./common_variables.env
- ./settings.env
Docker lukee kyseisen tiedoston listan ja sen sisältämät arvoparit ja ne ovat näkyvissä kontissa ajettavassa ympäristössä. Jos ohjelmisto riippuu toisesta ohjelmistosta, jota ajetaan toisessa kontissa, se voi lukea samat ympäristömuuttujat yhteisestä tiedostosta.
Verkkoasetukset
Jos ohjelmisto käyttää muita palveluita, sen pitää pystyä vaihtamaan tietoja toisten konttien välillä. Sitä varten luodaan Bridge network eli Docker siltaverkko. Määrittely tapahtuu seuraavasti
networks:
myapp_network:
driver: bridge
myapp_network on nimi, jonka haluat antaa verkolle, jota konttisi käyttävät.
Palvelulle pitää myös määritellä vastaava lohko
networks:
- myapp_network
Tämä lista määrittelee, minkä verkkojen osana kyseinen palvelu toimii. Sinulla voi olla ajossa samasta sovelluksesta eri versiot omissa konteissaan, jotka käyttävät samoja asetuksia, mutta omissa verkoissaan.
Käynnistysjärjestys
Jos ohjelmistokomponentti tai palvelu edellyttää jonkin toisen palvelun olemassaoloa, se voidaan määritellä depends-lohkolla.
depends_on:
- mongodb
Tämä tarkoittaa sitä, että kyseinen kontti käynnistetään vasta, kun mongodb niminen kontti on käynnistetty. Koska kontissa olevan palvelun käynnistäminen vie oman aikansa, täytyy sovelluksen sisältää logiikka, jolla testataan, että palvelu vastaa kyselyihin.
Ei kommentteja:
Lähetä kommentti
Voit jättää kirjoitukseen liittyvän kommentin.